2015-10-09 32 views
2

我不明白類型推斷的目的是什麼,將其添加到語言中有什麼好處,是否有任何特殊用途,如在C + + 11自動關鍵詞?在c#中的類型推斷的目的是什麼

我看到它就像一個插件,因爲我真的不知道情況下所產生的類型事先不知道不一定

(我指的是使用關鍵字變種)

謝謝

+0

看看[這裏](http://programmers.stackexchange.com/questions/257450/why-is-type-in​​ference-useful) –

+0

它使匿名類型成爲可能。它可以節省大量的輸入。 – Blorgbeard

+0

我期待着,謝謝 – HDJEMAI

回答

2

類型推斷可以節省難以置信的處理複雜簽名時的打字量。例如,

var itemCreator = _interface.GetItemCreator(); 

是如此比

Func<int, string, double, decimal, 
    Dictionary<int, KeyValuePair<int, string>>, 
    Action<string, string, string>> itemCreator = _interface.GetItemCreator(); 

更加緊湊和可讀性這顯然是一個令人難以置信的人爲的例子旨在證明這一點......這些代碼就會變得混亂和類型聲明說去它也經常是凌亂的。類型推斷節省了我們在這方面的一些痛苦。

此外,類型推斷使我們能夠使用在LINQ和序列化庫中大量使用的匿名方法。

匿名方法在編譯時生成一個類型。因此,您無法提前適當地聲明該類型。至於你與C++ 11中的自動操作符的比較,乍一看它似乎具有相同/相似的功能。

1
public class Class1 
{ 
    public string Method1() 
    { 
     return "string"; 
    } 
} 

// Calling code 
Class1 cls1 = new Class1(); 
var result = cls1.Method1(); // result is string type. 

了一段時間後,你決定你需要從你的方法一回INT。你可以這樣做,而不必擔心調用代碼。

除了這個var也在LINQ中大量使用。

另一個用途是使你的代碼更加清晰,例如:

Dictionary<int, string> dictionary = new Dictionary<int, string>(); 

var dictionary = new Dictionary<int, string>(); 

你可以看看哪一個更乾淨閱讀。

1

類型推斷有助於C#開發的至少有三個方面:

  1. 編寫代碼

    var需要較少的按鍵,和更少的時間擔心確切類型的方法等返回

  2. 理解代碼

    var產生比明確指定類型的更簡潔,可讀代碼。需要在更少的地方

  3. 維護代碼

    更少的代碼更改時,在您的應用程序改變的類型(他們會)。

var有很多好處和很少的缺點。我在任何地方都使用它,除非我有令人信服的理由不要。