C#3.0学习(2)---对象集合初始化器
对象与集合初始化器
创建一个对象时可以包含一个对象初始化器或集合初始化器,用于初始化所创建对象的成员或新创建的集合的元素。使用初始化器可以让我们的代码变得更简洁。
对象初始化器
在以前如果定义了一个类,并将类实例化,我们会像下面这样做
public class oec2003 { int x, y; public int X { get { return x; } set { x = value; } } public int Y { get { return x; } set { x = value; } } }
oec2003 o=new oec2003();
o.X=2003;
o.Y=2004;
使用对象初始化器
public class oec2003 { int x, y; public int X { get { return x; } set { x = value; } } public int Y { get { return x; } set { x = value; } } } var o=new oec2003{X=2003,Y=2004};
对象初时化器是利用了编译器对对象中的对外可见的字段或属性进行按序赋值,在编译还是隐式调用了构造函数,对字段或属性的赋值可以是一个或是多个。
集合初时化器
集合初始化器会对初始化器中的元素进行按序调用,下面是一个集合初时化器的例子
List<int> num = new List<int> { 0, 1, 2, 6, 7, 8, 9 };
应用集合初始化器的对象的类型必须实现了System.Collections.Generic.ICollections<T>接口并指定了确定的T。集合初始化器将依次对每个指定的元素调用ICollection<T>.Add(T)。
有下面这样一个类,记录一个人的个人信息
public class Oec2003Info { string name; int age; List<string> phoneNumbers = new List<string>(); public string Name { get { return name; } set { name = value; } } public string Age { get { return age; } set { age = value; } } public List<string> PhoneNumbers { get { return phoneNumbers; } } }
以前的做法
var oec2003infos = new List<Oec2003Info>(); var tmp1= new Oec2003Info(); tmp1.Name = "oec2003"; tmp1.Age=100; tmp1.PhoneNumbers.Add(" tmp1.PhoneNumbers.Add("1592********"); Oec2003Info.Add(tmp1); var tmp2 = new Oec2003Info(); tmp2 .Name = "oec2003"; tmp2.Age=100; tmp2.PhoneNumbers.Add("1593********"); tmp3.PhoneNumbers.Add("1594********"); Oec2003Info.Add(tmp2);
使用对象初始化器
var oec2003infos= new List<Oec2003Info> { new Oec2003Info { Name = "oec2003", Age=100; PhoneNumbers={"1591********","1592**********"} }, new Oec2003Info { Name = "oec2003", Age=100; PhoneNumbers = { "1593********","1594*********"} } };

微信公众号:不止dotNET
作者: oec2003
出处: http://oec2003.cnblogs.com/
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文链接,否则 保留追究法律责任的权利。
作者: oec2003
出处: http://oec2003.cnblogs.com/
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文链接,否则 保留追究法律责任的权利。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 分享 3 个 .NET 开源的文件压缩处理库,助力快速实现文件压缩解压功能!
· Ollama——大语言模型本地部署的极速利器
· [AI/GPT/综述] AI Agent的设计模式综述