您好,登錄后才能下訂單哦!
這篇“C#怎么自定義集合初始化器”文章的知識(shí)點(diǎn)大部分人都不太理解,所以小編給大家總結(jié)了以下內(nèi)容,內(nèi)容詳細(xì),步驟清晰,具有一定的借鑒價(jià)值,希望大家閱讀完這篇文章能有所收獲,下面我們一起來(lái)看看這篇“C#怎么自定義集合初始化器”文章吧。
對(duì)int類(lèi)型集合初始化,這樣寫(xiě):
static void Main(string[] args) { var list = new List<int> {0, 1}; foreach (var item in list) { Console.WriteLine(item); } Console.ReadKey(); }
對(duì)鍵值對(duì)集合初始化,這樣寫(xiě):
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(); }
編譯器根據(jù)慣例來(lái)理解集合初始化器,即約定:如果一個(gè)類(lèi)型實(shí)現(xiàn)IEnumerable<T>接口,并且提供了Add(object obj)方法,該類(lèi)型可以使用集合初始化器。
假設(shè),我們想通過(guò)一個(gè)集合初始化器來(lái)定義一個(gè)模特的集合,以胸圍、腰圍、臀圍作為集合初始化器的參數(shù):
var list = new MoTes{ {79, 60, 89}, {82, 63, 90} };
{79, 60, 89}就像int類(lèi)型一樣,是一個(gè)數(shù)據(jù)結(jié)構(gòu),把它定義成結(jié)構(gòu)類(lèi)型:
public struct SanWei { public readonly double _Xiong; public readonly double _Yao; public readonly double _Tun; //構(gòu)造函數(shù)的參數(shù)類(lèi)型、順序和數(shù)量決定了集合初始化器的參數(shù)類(lèi)型、順序和數(shù)量 public SanWei(double xiong, double yao, double tun) { _Xiong = xiong; _Yao = yao; _Tun = tun; } }
而想讓MoTes類(lèi)可以使用集合初始化器,需要滿(mǎn)足2個(gè)條件:
1、實(shí)現(xiàn)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(); } }
在客戶(hù)端:
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(); }
以上就是關(guān)于“C#怎么自定義集合初始化器”這篇文章的內(nèi)容,相信大家都有了一定的了解,希望小編分享的內(nèi)容對(duì)大家有幫助,若想了解更多相關(guān)的知識(shí)內(nèi)容,請(qǐng)關(guān)注億速云行業(yè)資訊頻道。
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀(guān)點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。