新特征之创建和初始化集合对象牛
、 引言
C# 3.0中新的对象初始化器是一种简单的语法特征-借助于这种特征,对象的构建和初始化变得非常简单。假定你有一个类Student,它看起来有如下样子:
public class Student{
public string firstName;
public string lastName;
}
那么,你可以使用对象初始化器来创建这个类的一个对象,如下所示:
var student1 = new Student{firstName = \"Bruce\", lastName = \"Willis\"};
C# 3.0中新的集合初始化器语法也具有类似操作特征。例如,实现ollection<T>的任何对象都可以使用一个集合初始化器来初始化它的值。
一个集合初始化器由下列部分组成:
· 一个对象初始化器序列,用\"{\"和\"}\"符号包括,并且由逗号隔开。
· 元素初始化器,它们中每一个都指定一个元素以被添加到指定的集合对象中(元素初始化器不能是一个集合初始化器中的赋值表达式)。
那么,究竟它是如何工作的呢?一个集合初始化器必须遵循下列规则:
· 应用集合初始化器的每一个集合对象必须是一种实现了ollection<T>的类型(恰好针对一个T)。
· 必须存在从每一个元素初始化器到T类型的一种隐式转换。一个集合初始化器针对每一个指定的元素都会按序调用ICollection<T>.Add(T)方法。
作为一个例子,下面的集合初始化器创建并初始化一个新的字符串集合-这个集合具有3个成员:\"Alice\",\"Bob\"和\"Chris\",参考如下:
List<string> names = new List<string> { \"Alice\", \"Bob\", \"Chris\" };
注意:所有的初始值都是字符串类型。否则,你将得到一个编译器错误。
二、 实现集合初始化
假定你想描述一个班及其中的注册同学。为此,你可以通过使用C# 3.0中的集合初始化器编程实现,如下所示:
using System;
using neric;
using xt;
using ery;
using inq;
using inq;
namespace CollectionInitializer
{
class Program
{
public class MyClass
{
public string nameofClass;
public List<string> studentNames = new List<string>();
}
static void Main(string[] args)
{
var classes = new List<MyClass>
{
new MyClass
{
nameofClass = \"Science\",
studentNames = {\"Laura\", \"George\"}
},
new MyClass
{
nameofClass = \"Commerce\",
studentNames = {\"Bill\", \"Hillary\"}
}
};
}
}
}
如果你有Visual Studio 2005并且安装了LINQ Preview,那么可以在IDE中编译上面的代码。
如果你没有VS 2005但是安装了LINQ Preview,那么你可以使用下列命令来从命令行编译该代码:
绰号:冬瓜前一页[1][2][3][4][5][6]下一页尾页任家萱任容萱前一页[1][2][3][4][5][6][7]下一页尾页前一页[1][2][3][4][5][6][7][8]下一页尾页任容萱家庭成员 C:\\Program Files\\LINQ Preview\\Bin\\e
/reference:\"C:\\Program Files\\LINQ Preview\\Bin\\l\"
/reference:C:\\WINDOWS\\\\Framework\\v2.0.50727\\l
/reference:C:\\WINDOWS\\\\Framework\\v2.0.50727\\l
/reference:\"C:\\Program Files\\LINQ Preview\\Bin\\l\"
/reference:C:\\WINDOWS\\\\Framework\\v2.0.50727\\l
/reference:\"C:\\Program Files\\LINQ Preview\\Bin\\l\"
贺州哪家治白癜风医院好体质虚弱容易生病怎么调理
南阳白癜风医院