C#如何声明一个带自定义构造函数的结构数组

一个结构体带自定义的构造函数进行初始话变量我现在要声明一个这样的结构体数组STmpRM[]s_TmpRM=newSTmpRM[10](m_ii,m_uu,m_pq);//... 一个结构体带自定义的构造函数进行初始话变量 我现在要声明一个这样的结构体数组

STmpRM[] s_TmpRM = new STmpRM[10](m_ii ,m_uu,m_pq);//错误的
STmpRM[] s_TmpRM = new STmpRM(m_ii ,m_uu,m_pq)[10];//错误的
1楼方法没有问题 那么如果我要声明100个,或者1000个数组成员呢 有没有更加好的方法
展开
 我来答
makosharp
推荐于2016-02-01 · TA获得超过676个赞
知道小有建树答主
回答量:188
采纳率:100%
帮助的人:269万
展开全部
中肯的说一下,但从声明语法来看是实现不了这样的功能的。因为声明和赋初始值被CLR分开处理了,也就是说int[] ints=new int[]{1,2,3};这样的语句其实也都是在编译时拆分了处理的。

从这点上说,你一定要实现上述的功能,最普遍的做法都是
STmpRM[] s_TmpRM=new STmpRM[1000];
然后依次进行初始化,看个人喜好用不同的方法。最普通的无非也就是
for(...)了

当然,C#这么灵活,我们在赋值的部分上还是可以玩出很多花样的,往下看。

首先我可以给你一个最接近的实现方式,从代码角度说嘛,声明部分和赋初始值在同一行,勉强算“带初始值的声明”了:

ArrayList ary = ArrayList.Repeat(new STmpRM(m_ii,m_uu,m_pq),capacity);
其中capacity是容量大小。

或许你一定要用数组? 那就这样写,一句搞定,当然看起来有点乱:

STmpRM[] s_TmpRM = (STmpRM[])(ArrayList.Repeat(new STmpRM(m_ii,m_uu,m_pq), capacity).ToArray(typeof(STmpRM)));

我们仔细来看,首先由Repeat得到一个容量为capacity,每个元素都是以(m_ii,m_uu,m_pq)初始化的STmpRM对象,然后使用ToArray的其中一个重载方法:ToArray(Type type),之后就得到了一个object[]。最后强制装换成STmpRM[],OK,可以使用了。

最后提一下,刻意的追求一些从常规途径很难实现的东西不见得就是好事,视我们的需要而定,可以走其他路线解决。万万不要钻牛角尖。
比如你的问题,如果你的每个语句都像我那样写,别人看了肯定会不舒服的。
最简单,也最实用的,永远都是:

STmpRM[] s_TmpRM = new STmpRM[10];
for (int i = 0; i < 10; s_TmpRM[i] = new STmpRM(1, 2, 3), i++) ;

你觉得呢?^_^

欢迎提问,QQ176229432
老级幸1286
2009-09-28 · TA获得超过511个赞
知道小有建树答主
回答量:756
采纳率:0%
帮助的人:386万
展开全部
数组错了,不是 ( 括号是 { 括号。
用for
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
kid83
2009-09-28 · TA获得超过2081个赞
知道大有可为答主
回答量:1818
采纳率:0%
帮助的人:1995万
展开全部
public struct STmpRM
{
public int Id;
public string Name;

public STmpRM(int id, string name)
{
this.Id = id;
this.Name = name;
}
}

STmpRM[] arrRM = { new STmpRM(1, "Name1"), new STmpRM(2, "Name2") };
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友773a823
2009-09-28 · TA获得超过180个赞
知道答主
回答量:119
采纳率:0%
帮助的人:48.4万
展开全部
结构体?
学习过了
哪里用到这个结构体了
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式