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个数组成员呢 有没有更加好的方法 展开
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个数组成员呢 有没有更加好的方法 展开
展开全部
中肯的说一下,但从声明语法来看是实现不了这样的功能的。因为声明和赋初始值被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
从这点上说,你一定要实现上述的功能,最普遍的做法都是
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
展开全部
数组错了,不是 ( 括号是 { 括号。
用for
用for
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
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") };
{
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") };
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
结构体?
学习过了
哪里用到这个结构体了
学习过了
哪里用到这个结构体了
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询