C#结构数组最简单的初始化方式是什么?

问题描述

我要初始化的结构数组并非简单类型,而是有自定义类型,结构如下:structUIList{CMDcmd;//自定义枚举型stringdesc;ControlcheckBox;Controllabel;}

数组:UIList[]m_pList={{CMD.XXX,"XXX",checkBox_XXX,label_XXX},{CMD.YYY,"YYY",checkBox_YYY,label_YYY},}

1.这样写编译不过2.改成下面的还是编译不过UIList[]m_pList=newUIList[]{{CMD.XXX,"XXX",checkBox_XXX,label_XXX},{CMD.YYY,"YYY",checkBox_YYY,label_YYY},}

3.我这种记录有1000条的话,一定要有简洁高效的写法才行,像C++是可以很清晰的写在一起的,形成一张表不知道c#怎么写?

解决方案

本帖最后由 sunbinjin 于 2014-11-18 23:26:06 编辑
解决方案二:
你先写一个~~~会有提示按提示改编译过了再复制多个
解决方案三:
UIList[]m_pList={newUIList{cmd=xxx,desc=xxx},...}注意要定义成public的。
解决方案四:
该回复于2014-11-19 00:10:35被版主删除
解决方案五:
1.首先,你应该好好看看书,看看老外的书。你的问题是,array数组类型,在声明及定义时,必须指定个数如1000,如下:UIList[]myArray=newUIList[1000];MessageBox.Show("Creatarraydone!");当然你可以只声明但不初始化。2.其次,想简洁高效,就用泛型,可随意添加,通过方法Add()或AddRange();而且,你这什么代码,结构体成员全都是默认私有的,你又没属性又没方法,又没构造函数,你搞个毛线。所有数组成员必须初始化再使用。publicclassUIList{publicCMDcmd;publicstringdesc;publicControlcheckBox;publicControllabel;publicUIList(){cmd=CMD.white;desc="abcd";}}privatevoidbutton1_Click(objectsender,EventArgse){List<UIList>myList=newList<UIList>();myList.Add(newUIList());UIList[]myArray=newUIList[3]{newUIList(),newUIList(),newUIList()};myList.AddRange(myArray);if(myList[0].desc=="abcd"&&myList[0].cmd==CMD.white)MessageBox.Show("SeeConstructormethod");varlinqResult=fromninmyListwheren.desc=="abcd"selectn;UIList[]resultArray=linqResult.ToArray();MessageBox.Show("Resultcountis"+resultArray.Length.ToString());}
解决方案六:
最简单的写法应该是加构造函数,然后你就可以new1000次,如果你的1000个是写在代码里,只好{newxxx,newxxx,....1000次}如果是从其他数组复制的,可以用linq的Select或new一个Array[1000]挨个生成。这种事先知道数据条数的不适合用泛型List
解决方案七:
给你写个例子publicstructMyUI{stringA;stringB;intC;publicMyUI(stringa,stringb,intc){A=a;B=b;C=c;}}publicclassMyList:IEnumerable<MyUI>{privateList<MyUI>lst=newList<MyUI>();publicvoidAdd(stringa,stringb,intc){lst.Add(newMyUI(a,b,c));}publicIEnumerator<MyUI>GetEnumerator(){returnlst.GetEnumerator();}IEnumeratorIEnumerable.GetEnumerator(){returnlst.GetEnumerator();}}

这里,关键是要实现IEnumerable,同时有一个Add方法用于匹配{....}表达式。最终可以这样调用其实例化和Add方法MyListm_pList=newMyList{{"asd","234",2},{"k2j","298",3}};

解决方案八:
这个可枚举对象的实例化方法,实际上是c#的语法糖。它帮你简写实例化和Add方法,写成类似数组实例化的简单语法形式。
解决方案:
如果你实例化成这样类型的可枚举对象varm_pList=newList<MyUI>{{"asd","234",2},{"asd","234",2}};

编译时由于找不到有3个参数的Add方法,c#编译器会报错。而只要能够找得到3个参数的Add方法,编译就通过了。

时间: 2024-09-19 20:36:25

C#结构数组最简单的初始化方式是什么?的相关文章

gcc 用函数指针初始化结构数组的问题

问题描述 gcc 用函数指针初始化结构数组的问题 由于最近需要编译libhybris,遇到了奇怪的问题,简而言之,可以概括如下,对于程序 int func(int a);int func2(int a); int func(int a){ return a+1;} int func2(int a){ return a*4;} typedef struct _{ int tmp; void * addr; // 1处:此处如果改称int 或者uint32_t short tmp2;} ptr_st

编程c语言-有没有简单的或者快速的方法将输入的遗传数据读入一个结构数组

问题描述 有没有简单的或者快速的方法将输入的遗传数据读入一个结构数组 如输入D93 200 读入结构体数组中的train[3] 结构体为struct Train{ char name[10]; int a;} 讲D93读入name 200读入a 有没有简单的方法或函数呀 渣渣求指点 解决方案 楼主要这样的吗? #include<stdio.h> struct Train{ char name[10]; int a; }train[3]; void main(void) { int i; for

《C++覆辙录》——第2章 语法问题2.1:数组定义和值初始化的语法形式混淆

第2章 语法问题 C++覆辙录C++语言的语法和词法结构博大精深.此复杂性的一部分是从C语言那里继承而来的,另一部分则是为支撑某些特定的语言特性所要求的. 本章中我们将考察一组语法相关的头疼问题.其中有些属于常见的手误,但是错误的代码仍然能够通过编译,只不过会以出人意料的方式运行罢了.另外一些则是由于一段代码的语法结构及它们的运行期行为不再互为表里.其余的部分,我们主要研究语法层面的灵活余地带来的问题:明明是一字不差的代码,不同的软件工程师能从中得出大相径庭的结论来. 2.1:数组定义和值初始化

PHP数组的定义、初始化和数组元素的显示

从ASP初入门到PHP,感觉到PHP的强大之一就是内置函数的丰富,比如先前学习的PHP日期时间函数,读写文件的相关函数等都无不表明了PHP的更专业.更令用户的使用得心应手. 一开始我对PHP函数的丰富功能很兴奋,随着对越来越多近乎变态多的函数接触之后,突然联想到了ASP内置函数的稀少,要完成某项特殊功能,常须自定义函数,随着应用的在增多,自己居然也有了一套常用的函数库.然而现在在PHP中,这些功能早已被标准化.规范化而浓缩为内置函数直接使用,曾经的ASP开发人员成为了PHP的普通用户. 但转念一

在C#中如何在函数参数中返回结构数组?

函数|数组 头晕脑涨地研究了一天,就为了实现在函数的参数中返回结构数组. 现供大家分享,节省学习时间. 实例:  /// <summary>  /// 用户信息结构  /// </summary>  public struct TUSER  {   public string LoginName;   public string LoginPass;   public string TrueName;   public string EMail;   public int Leve

C#函数的参数中返回结构数组

函数|数组 实例:/// <summary>/// 用户信息结构/// </summary>public struct TUSER { public string LoginName; public string LoginPass; public string TrueName; public string EMail; public int Level;} /// <summary>/// 获得所有注册用户/// </summary>/// <pa

PHP数组的定义、初始化和数组元素的显示实现代码_php基础

从ASP初入门到PHP,感觉到PHP的强大之一就是内置函数的丰富,比如先前学习的PHP日期时间函数,读写文件的相关函数等都无不表明了PHP的更专业.更令用户的使用得心应手. 一开始我对PHP函数的丰富功能很兴奋,随着对越来越多近乎变态多的函数接触之后,突然联想到了ASP内置函数的稀少,要完成某项特殊功能,常须自定义函数,随着应用的在增多,自己居然也有了一套常用的函数库.然而现在在PHP中,这些功能早已被标准化.规范化而浓缩为内置函数直接使用,曾经的ASP开发人员成为了PHP的普通用户. 但转念一

js删除数组元素、清空数组的简单方法(必看)_javascript技巧

一.清空数组 var ary = [1,2,3,4]; ary.splice(0,ary.length);//清空数组 console.log(ary); // 输出 [],空数组,即被清空了 二.删除数组元素 var ary = [1,2,3,4]; ary.splice(0,1); 或 ary.splice($.inArray(2, ary), 1); 其中$.inArray(2, ary)用来查找某元素在数组中的索引位置. 三,js 删除数组几种方法 var arr=['a','b','c

《从缺陷中学习C/C++》——6.2 数组定义和值初始化形式混淆

6.2 数组定义和值初始化形式混淆 从缺陷中学习C/C++代码示例 int *ip = new int(12); for (int i = 0; i < 12; i++) { ip[i] = i; } delete [] ip;现象&结果产生运行时错误,提示如下的错误信息: glibc detected *** free(): invalid next size (fast) Bug分析int *ip=new int(12)表示new了一个整型变量,值是12.ip指向这个变量. new返回的