首页 新闻 会员 周边

C#自定义类,要想这类实现数组初始化

-1
[待解决问题]

比如,定义一个类

public class class1

{

   public char a;

  public int b; 

//成员只有两个 a 和 b

}

请问如何实现下面语句

class1[] c=new class1[] {{'a',1},{'b',2},{'c',3}};

 

 

fishall的主页 fishall | 菜鸟二级 | 园豆:300
提问于:2010-11-11 13:26
< >
分享
所有回答(2)
0
class class1
{
private char a;
private int b;
//构造函数,用来初始a和b
public class1(char a, int b)
{
this.a = a;
this.b = b;
}
//下面是设置两个可读属性,为显示赋值结果。可以忽略
public char A
{
get { return this.a; }
}
public int B
{
get { return b; }
}
}

新建控制台应用程序,调用一下。进行测试。

 

class Program
{
static void Main(string[] args)
{
class1[] c
= new class1[] { new class1('a', 1), new class1('b', 2), new class1('c', 3) };
for (int i = 0; i < c.Length; i++)
{
class1 ci
= c[i];
Console.WriteLine(ci.A
+ " " + ci.B);
}
Console.Read();
}
}
敬YES | 园豆:490 (菜鸟二级) | 2010-11-11 13:44
class1[] c = new class1[] { new class1('a', 1), new class1('b', 2), new class1('c', 3) }; 我觉得这语句有点费时,不像c++中的struct,请问能不能在c#中用struct实现 struct1[] c=new struct1[] {{'a',1},{'b',2},{'c',3}};
支持(0) 反对(0) fishall | 园豆:300 (菜鸟二级) | 2010-11-11 14:21
0

class1[] c=new class1[] {{'a',1},{'b',2},{'c',3}};

这种语法糖不是不可以有,但是它不能提高多少生产效率,反而还会导致可读性降低。比如{'a',1}两个参数的顺序是什么样的?如果是{1,2},谁能知道哪个参数是什么意思?还得回去查class1的属性/字段顺序,多麻烦?所以还是老老实实的用集合和类的初始化器吧。看这样的代码多清晰,好的语法,不止是方便,更要有高可读性:

class1[] c = new class1[]
{
new class1{ A='a', B=1 },
new class1{ A='b', B=2 },
new class1{ A='c', B=3 }
};

 

麒麟.NET | 园豆:3614 (老鸟四级) | 2010-11-12 10:16
谢谢指点
支持(0) 反对(0) fishall | 园豆:300 (菜鸟二级) | 2010-11-18 20:07
@fishall:有一个好习惯叫做结贴。。。
支持(0) 反对(0) 麒麟.NET | 园豆:3614 (老鸟四级) | 2010-12-06 13:37
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册