[英]What is the purpose of Type Inference in c#
我沒有確切看到類型推斷的目的是什么,將其添加到語言中有什么好處,是否有像C ++ 11 auto關鍵字那樣的特殊用途?
我看到它就像添加一樣,因為我不真正知道不一定事先知道結果類型的情況
(我的意思是使用關鍵字var)
謝謝
類型推斷節省了復雜的簽名交易時輸入的數量驚人 。 例如,
var itemCreator = _interface.GetItemCreator();
比它更緊湊,更易讀
Func<int, string, double, decimal,
Dictionary<int, KeyValuePair<int, string>>,
Action<string, string, string>> itemCreator = _interface.GetItemCreator();
這顯然是一個難以置信的人為設計的例子,旨在證明這一點……代碼變得混亂,並且隨之而來的類型聲明也常常混亂。 類型推斷為我們節省了這方面的痛苦。
另外,類型推斷使我們能夠使用在LINQ和序列化庫中大量使用的匿名方法。
匿名方法在編譯時生成一個類型。 因此,您無法提前聲明適當的類型。
就您與C ++ 11中的auto運算符的比較而言,乍一看它似乎具有相同/相似的功能。
public class Class1
{
public string Method1()
{
return "string";
}
}
// Calling code
Class1 cls1 = new Class1();
var result = cls1.Method1(); // result is string type.
現在過了一段時間,您決定需要從Method1返回int 。 您可以這樣做,而不必擔心調用代碼。
除了這個變種還大量在LINQ使用。
另一個用途是使代碼更整潔,例如:
Dictionary<int, string> dictionary = new Dictionary<int, string>();
與
var dictionary = new Dictionary<int, string>();
您可以看到哪個更容易閱讀。
類型推斷至少有助於C#開發的三個方面:
編寫代碼
var
所需的擊鍵次數更少,而為方法等返回的確切類型擔心的時間也更少。
了解代碼
與顯式指定類型相比, var
產生的代碼更簡潔易讀。
維護代碼
當應用程序中的類型更改時(並且會更改),需要在較少的地方進行較少的代碼更改。
var
有很多優點,而缺點很少。 除非有充分的理由,否則我會在任何地方使用它。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.