簡體   English   中英

c#中類型推斷的目的是什么

[英]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#開發的三個方面:

  1. 編寫代碼

    var所需的擊鍵次數更少,而為方法等返回的確切類型擔心的時間也更少。

  2. 了解代碼

    與顯式指定類型相比, var產生的代碼更簡潔易讀。

  3. 維護代碼

    當應用程序中的類型更改時(並且會更改),需要在較少的地方進行較少的代碼更改。

var有很多優點,而缺點很少。 除非有充分的理由,否則我會在任何地方使用它。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM