这篇文章介绍了C#自定义集合初始化器的方法,文中通过示例代码介绍的非常详细。对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
对int类型集合初始化,这样写:
static void Main(string[] args)
{
var list = new List<int> {0, 1};
foreach (var item in list)
{
Console.WriteLine(item);
}
Console.ReadKey();
}
对键值对集合初始化,这样写:
static void Main(string[] args)
{
var dic = new Dictionary<string, string>
{
{"location", "qingdao"},
{"street","lingchuang"}
};
foreach (var item in dic)
{
Console.WriteLine("{0}:{1}", item.Key, item.Value);
}
Console.ReadKey();
}
编译器是如何"读懂"集合初始化器?
编译器根据惯例来理解集合初始化器,即约定:如果一个类型实现IEnumerable<T>接口,并且提供了Add(object obj)方法,该类型可以使用集合初始化器。
假设,我们想通过一个集合初始化器来定义一个模特的集合,以胸围、腰围、臀围作为集合初始化器的参数:
var list = new MoTes{
{79, 60, 89},
{82, 63, 90}
};
{79, 60, 89}就像int类型一样,是一个数据结构,把它定义成结构类型:
public struct SanWei
{
public readonly double _Xiong;
public readonly double _Yao;
public readonly double _Tun;
//构造函数的参数类型、顺序和数量决定了集合初始化器的参数类型、顺序和数量
public SanWei(double xiong, double yao, double tun)
{
_Xiong = xiong;
_Yao = yao;
_Tun = tun;
}
}
而想让MoTes类可以使用集合初始化器,需要满足2个条件:
- 1、实现IEnumerable<SanWei>接口
- 2、提供Add(double xiong, double yao, double tun)方法
public class MoTes : IEnumerable<SanWei>
{
private readonly List<SanWei> _motes;
public MoTes()
{
_motes = new List<SanWei>();
}
public void Add(double xiong, double yao, double tun)
{
_motes.Add(new SanWei(xiong, yao, tun));
}
public IEnumerator<SanWei> GetEnumerator()
{
return _motes.GetEnumerator();
}
IEnumerator IEnumerable.GetEnumerator()
{
return GetEnumerator();
}
}
在客户端:
static void Main(string[] args)
{
var list = new MoTes()
{
{79, 60, 89},
{82, 63, 90}
};
foreach (var item in list)
{
Console.WriteLine("胸围:{0},腰围:{1},臀围:{2}",item._Xiong, item._Yao, item._Tun);
}
Console.ReadKey();
}
到此这篇关于C#自定义集合初始化器的文章就介绍到这了。希望对大家的学习有所帮助,也希望大家多多支持得得之家。
沃梦达教程
本文标题为:C#自定义集合初始化器
基础教程推荐
猜你喜欢
- linux – 如何在Debian Jessie中安装dotnet core sdk 2023-09-26
- C# windows语音识别与朗读实例 2023-04-27
- 一个读写csv文件的C#类 2022-11-06
- C#控制台实现飞行棋小游戏 2023-04-22
- C# 调用WebService的方法 2023-03-09
- C#类和结构详解 2023-05-30
- C# List实现行转列的通用方案 2022-11-02
- unity实现动态排行榜 2023-04-27
- winform把Office转成PDF文件 2023-06-14
- ZooKeeper的安装及部署教程 2023-01-22