11
A
回答
36
int xyz = 0;
爲什麼讓人們覺得超過必要? default
對於泛型代碼非常有用,但在這裏它不會添加任何內容。你也應該考慮如果你在正確的地方初始化它,並且有一個有意義的價值。有時你會看到堆棧變量的代碼如下:
int xyz = 0;
if(someCondition)
{
// ...
xyz = 1;
// ...
}
else
{
// ...
xyz = 2;
// ...
}
在這種情況下,您應該延遲初始化,直到您具有實際值。請執行以下操作:
int xyz;
if(someCondition)
{
// ...
xyz = 1;
// ...
}
else
{
// ...
xyz = 2;
// ...
}
編譯器確保您不使用未初始化的堆棧變量。在某些情況下,你必須使用無意義的值,因爲編譯器無法知道代碼永遠不會執行(由於異常,調用Exit等)。這是規則的例外(不是雙關語)。
5
9
default
運算符的用途是爲您提供類型的默認值,但主要是爲了讓泛型對於聲明爲泛型類型參數的值具有有效值而添加的。
我沒有確鑿的證據,但我懷疑編譯器會針對您的具體情況發出相同的代碼。
然而,這裏有一個合法使用的default
:
public T Aggregate<T>(IEnumerable<T> collection, Func<T, T, T> aggregation)
{
T result = default(T);
foreach (T element in collection)
result = aggregation(result, element);
return result;
}
沒有default
,上面的代碼將需要一些黑客爲了正確地編譯和功能。
因此,使用第一個,將其設置爲0
。
2
int xyz = default(int); 我喜歡這種方式時使用泛型bcoz它讓您靈活地獲得默認的任何類型,你正在與。
int xyz = 0;另一方面,這很容易和快速,顯然在通用情況下不起作用。
兩者都有自己的優點和缺點..
問候,
14
3
鑑於發出CIL是相同的(你
IL_0001: ldc.i4.0
IL_0002: stloc.0
在這兩種情況下
),規則是要選擇你感覺更好通信代碼的意圖之一。通常,感覺問題是主觀的,難以確定;然而,在這種情況下,我是代碼審查人員,我將不得不提出一個非常有吸引力的理由來接受看起來完全是多餘的使用default()
。
0
INT XYZ = 0是moreclear,defaut通常與泛型
0
最好使用是
int xyz;
因爲你不能訪問到未初始化的變量。
相關問題
- 1. 哪個更好?爲什麼?
- 2. 哪個代碼更好?爲什麼?
- 3. 數據庫 - 哪個更好,爲什麼?
- 4. 哪個LINQ語句更好,爲什麼?
- 5. 哪個版本更好,爲什麼在Objective-C中?
- 6. 這兩個GetLargestValue C#實現中的哪一個更好,爲什麼?
- 7. DateTime.hasvalue vs datetime == null,哪一個更好,爲什麼
- 8. 哪一個是更好的單身人士,爲什麼?
- 9. 哪種方法更好,爲什麼?
- 10. 哪些SQL查詢更好,爲什麼?
- 11. 哪一個更快,爲什麼? JavaScript的
- 12. 哪一個是更快,爲什麼
- 13. 哪一個更好?
- 14. 哪一個更好?
- 15. 哪一個更好?
- 16. 哪個更好用$(function(){});或$(document).ready();爲什麼?
- 17. 這兩個中哪一個在PHP中有更好的性能,爲什麼?
- 18. C++模板:關於哪個更好的使用方法以及爲什麼
- 19. Xamarin,Objective C或Phonegap哪一個更好?
- 20. 這兩個程序哪個更好,爲什麼?
- 21. C「string」init - 哪個更好?
- 22. 在WPF哪個更好,爲圖標或XAML路徑使用圖像?爲什麼?
- 23. 哪一個是最好用的,爲什麼?
- 24. 從文件中讀取。哪一種方法更好,爲什麼?
- 25. 將數組從C++傳遞給c#,然後通過值或引用返回,哪一個更好?爲什麼?
- 26. JotCache vs Joomla內置Cache哪個更好?爲什麼?
- 27. mongoose vs mongodb(nodejs modules/extensions),哪個更好?爲什麼?
- 28. 將http重定向到https。哪個更好,爲什麼?
- 29. Ionic和Appcelerator之間哪個更好?爲什麼?
- 30. 匿名函數vs命名函數哪個更好,爲什麼
儘量讓代碼更清晰,更簡單。 – 2010-07-08 06:18:03