您的问题似乎不完整,您是想询问关于C语言编程的某个具体问题吗?比如C语言的语法、编程技巧、项目开发等。请提供更具体的信息,这样我才能给出更准确的回答。

2026-03-31 09:381阅读0评论SEO基础
  • 内容介绍
  • 文章标签
  • 相关推荐

本文共计556个文字,预计阅读时间需要3分钟。

您的问题似乎不完整,您是想询问关于C语言编程的某个具体问题吗?比如C语言的语法、编程技巧、项目开发等。请提供更具体的信息,这样我才能给出更准确的回答。

对int类型集合初始化,可以这样写:csharpstatic void Main(string[] args){ var list=new List {0, 1}; foreach (var item in list) { Console.WriteLine(item); } Console.ReadKey();}

对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语言编程的某个具体问题吗?比如C语言的语法、编程技巧、项目开发等。请提供更具体的信息,这样我才能给出更准确的回答。

本文共计556个文字,预计阅读时间需要3分钟。

您的问题似乎不完整,您是想询问关于C语言编程的某个具体问题吗?比如C语言的语法、编程技巧、项目开发等。请提供更具体的信息,这样我才能给出更准确的回答。

对int类型集合初始化,可以这样写:csharpstatic void Main(string[] args){ var list=new List {0, 1}; foreach (var item in list) { Console.WriteLine(item); } Console.ReadKey();}

对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语言编程的某个具体问题吗?比如C语言的语法、编程技巧、项目开发等。请提供更具体的信息,这样我才能给出更准确的回答。