C# 3.0新特性初步研究 Part5:匿名类型
生活随笔
收集整理的這篇文章主要介紹了
C# 3.0新特性初步研究 Part5:匿名类型
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
匿名類型(Anonymouse Type)——這年頭什么多系都匿名了 : )
在初始化的時候根據初始化列表自動產生類型的一種機制。
典型的代碼:
1class?Program
2????{
3????????static?void?Main(string[]?args)
4????????{
5????????????var?x?=?new?{?a?=?3,?b?=?5,?c?=?"some?text"?};
6????????????Console.WriteLine(x.a.ToString());
7????????}
8????} 很奇怪吧~~~
不要認為這個var x真的是沒有類型,其實這又是一個編譯器的魔術,
當我們編譯這段代碼的時候,編譯器會自動產生以下類型定義:
?1class?__Anonymous1
?2{
?3????private?int?_a?=?3;
?4????private?int?_b?=?5;
?5????private?string?_c?=?“some?text”;
?6
?7????public?int?a?{?get?{?return?_a;?}?set?{?_a?=?value;?}?}
?8????public?int?b?{?get?{?return?_b;?}?set?{?_b?=?value;?}?}
?9????public?int?c?{?get?{?return?_c;?}?set?{?_c?=?value;?}?}
10}
11
這樣就不會和我前面所的var必須初始化,并且必須讓編譯器“猜得出”正確的類型這一句話產生矛盾。
PS:再過20年估計編譯器就什么都可以做了,還是行業專家,“老板,買一個針對電信行業的編譯器,要帶SP增值服務擴張包的”
在初始化的時候根據初始化列表自動產生類型的一種機制。
典型的代碼:
1class?Program
2????{
3????????static?void?Main(string[]?args)
4????????{
5????????????var?x?=?new?{?a?=?3,?b?=?5,?c?=?"some?text"?};
6????????????Console.WriteLine(x.a.ToString());
7????????}
8????} 很奇怪吧~~~
不要認為這個var x真的是沒有類型,其實這又是一個編譯器的魔術,
當我們編譯這段代碼的時候,編譯器會自動產生以下類型定義:
?1class?__Anonymous1
?2{
?3????private?int?_a?=?3;
?4????private?int?_b?=?5;
?5????private?string?_c?=?“some?text”;
?6
?7????public?int?a?{?get?{?return?_a;?}?set?{?_a?=?value;?}?}
?8????public?int?b?{?get?{?return?_b;?}?set?{?_b?=?value;?}?}
?9????public?int?c?{?get?{?return?_c;?}?set?{?_c?=?value;?}?}
10}
11
這樣就不會和我前面所的var必須初始化,并且必須讓編譯器“猜得出”正確的類型這一句話產生矛盾。
PS:再過20年估計編譯器就什么都可以做了,還是行業專家,“老板,買一個針對電信行業的編譯器,要帶SP增值服務擴張包的”
轉載于:https://www.cnblogs.com/zc1984/archive/2006/06/10/422715.html
總結
以上是生活随笔為你收集整理的C# 3.0新特性初步研究 Part5:匿名类型的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: SQL Server2000数据库文件损
- 下一篇: Teddy's Knowledge Ba