[英]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.