[英]Type inference in C#
我知道msdn應該是第一個去的地方,它將在我得到這里的獨家新聞之后。 作為技術規范的一部分,msdn不會真正提供的是我現在要問的問題:
為了記錄這個問題的細節,如果使用lambdas和類型推斷調用該方法,那么知道(在偽代碼中)編譯器如何實際確定所需類型將是非常有趣的。
我期待看到關於如何定位該類型的編譯器邏輯流程。
類型推斷發生在C#的許多地方,至少如下:
var
關鍵字,它告訴編譯器根據初始化變量來推斷(推導)變量的正確類型 並回答你的問題:
1)它節省了大量的輸入,特別是在使用所謂的“LINQ方法”時。 比較例如
List<string> myList = new List<string>();
// ...
IEnumerable<string> result = myList.Where<string>((string s) => s.Length > 0)
.Select<string, string>((string s) => s.ToLower());
與
var myList = new List<string>();
// ...
var result = myList.Where(s => s.Length > 0).Select(s => s.ToLower());
2)我不知道“關聯”是什么意思,但如果沒有var
關鍵字,你就不能以類型安全的方式引用匿名類型(你總是可以使用object
或dynamic
),這使得它很漂亮使用匿名類型時很重要。
3)我無法想到的任何事情。 這只是一個方便的功能。 當然,它的缺席會使上述匿名類型不那么有用,但它們大多也是一個便利功能。
4)我認為3)也回答這個問題。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.