簡體   English   中英

這種類型推斷的優勢是什么?

[英]What is the advantage of this type inference?

使用類型推斷,我們可以編寫:

var myList = new List<int>();

但這不是真的有幫助嗎? 因為仍然需要我們僅添加整數,所以僅聲明變量'int'而不是'var'會更容易嗎?

var不會更改編譯器的輸出-只會使代碼更短。

var唯一提供其他功能的地方就是匿名類型:

var foo = new { Bar = 123 };

重要的是要了解var並不意味着動態變量 (在某種意義上說,它允許對象的類型發生變化)-它只允許您聲明一個變量並讓編譯器像您聲明的那樣推斷類型它。

IEnumerable<MadeUpEmbarrassinglyLongClassName> stupidVariable = new IEnumerable<MadeUpEmbarrassinglyLongClassName>();

var stupidVariable = new IEnumerable<MadeUpEmbarrassinglyLongClassName>();

哪個更容易閱讀?

它比以下內容更簡潔:

List<int> myList = new List<int>();

我想使用var可能更容易閱讀,盡管在這種瑣碎的情況下並沒有太多內容。

另外,如果該變量被合理地命名,那么無論如何它應該是什么類型。

var是未知類型的,直到它被分配一個值。 分配值后,它將立即成為其分配的類型。 當您無法在編譯時推斷要傳遞給哪個值的情況下,將使用此var var派上用場的另一種情況是在LINQ查詢中。 無需創建特殊的類來處理查詢返回,您只需將結果分配給var完成其余工作。 一旦開始使用LINQ,您一定會贊美var

在您的示例中,沒有優勢。 實際上,我認為代碼的可讀性會受到影響(意見)。

這個問題的答案歸結為個人喜好。 如果使用var ,編譯器將推斷List<int>() 您想看哪一個? 您的同行更喜歡看哪個?

暫無
暫無

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

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