- C#中
default
關鍵字的用法是什麼? - 是否在C#3.0中引入?
回答
default
關鍵字具有上下文關係,因爲它具有多種用法。我猜測你是指新的C#2,它返回一個類型的默認值。對於引用類型,這是null
,對於值類型,這個新實例全部爲零。
這裏有一些例子來證明我的意思:
using System;
class Example
{
static void Main()
{
Console.WriteLine(default(Int32)); // Prints "0"
Console.WriteLine(default(Boolean)); // Prints "False"
Console.WriteLine(default(String)); // Prints nothing (because it is null)
}
}
的default關鍵字取決於它的使用環境不同的語義。
第一利用是在switch語句的情況下,可用自C#1.0:
http://msdn.microsoft.com/en-us/library/06tc147t(VS.80).aspx
第二個用法是在仿製藥的情況下,初始化通用類型實例時,由於C#2.0可用:
http://msdn.microsoft.com/en-us/library/xwth0h0d(VS.80).aspx
您也可以使用默認值來獲取Generic Type
的默認值。
public T Foo<T>()
{
.
.
.
return default(T);
}
+1;國際海事組織這是最常見的用法... –
最常見的用途是with generics;而對於「常規」類型(即default(string)
等),其工作,這在手寫代碼中是非常罕見的。
但是,我在做代碼生成時使用這種方法,因爲這意味着我不需要對所有不同的默認值進行硬編碼 - 我只需確定類型並在生成的代碼中使用default(TypeName)
即可。
在仿製藥,典型的用法是TryGetValue
模式:
public static bool TryGetValue(string key, out T value) {
if(canFindIt) {
value = ...;
return true;
}
value = default(T);
return false;
}
在這裏,我們有分配一個值,退出方法,但主叫方不應該真正關心它是什麼。您可以與此相反的構造函數約束:
public static T CreateAndInit<T>() where T : ISomeInterface, new() {
T t = new T();
t.SomeMethodOnInterface();
return t;
}
+1在哪裏T:新()與默認(T)。我更喜歡T:new(),因爲它調用泛型類的完整構造函數。但是當new()約束不能被滿足時,default(T)是非常有用的。即不可變/單獨禁止new()。 –
「默認」關鍵字(除了的switch-case)可以幫助你初始化像類,列表和更多類型的對象的實例它的使用,因爲它的通用性當你不知道它的價值時,它可以幫助你分配類型的默認值,以避免在未來的代碼中出現錯誤。
- 1. C#中的Register關鍵字是什麼?
- 2. C++中的explicit關鍵字是什麼?
- 3. C#中global ::關鍵字的用法是什麼?
- 4. 什麼是C++中的「View()= default」?
- 5. 爲什麼我不能將Type變量傳遞給c#中的關鍵字「default」?
- 6. groovy中「使用」關鍵字/方法的用法是什麼?
- 7. 什麼是C#「checked」關鍵字?
- 8. C++中'和','或'等關鍵字的用途是什麼?
- 9. 在visual c中使用的fastcall關鍵字是什麼?
- 10. C#中「動態」關鍵字的用途是什麼?
- 11. 什麼是typeof關鍵字
- 12. 什麼是RCS關鍵字?
- 13. 什麼是synchronized關鍵字的使用?
- 14. JavaScript中的`name`關鍵字是什麼?
- 15. Java中的native關鍵字是什麼?
- 16. 什麼是PHP中的`finally`關鍵字?
- 17. 什麼是Oracle中的'THE'關鍵字?
- 18. Xcode中的(named)關鍵字是什麼?
- 19. 什麼是Swift中的'const'關鍵字?
- 20. 什麼是Java中的關鍵字?
- 21. swift中的「as」關鍵字是什麼
- 22. 什麼是PLSQL中的RESULT關鍵字?
- 23. 什麼是Swift中的「open」關鍵字?
- 24. 方法參數中有final關鍵字的用途是什麼?
- 25. java中「This」關鍵字的用法是什麼?
- 26. 在c#中使用「$」關鍵字是什麼 - web api
- 27. 什麼是在C#中的揮發性關鍵字的目的?
- 28. 爲什麼在CREATE PROCEDURE命令中允許使用DEFAULT關鍵字
- 29. 什麼是'char'關鍵字用於?
- 30. C#關鍵字固定/不安全的用途是什麼?
http://stackoverflow.com/questions/367378/returning-a-default-value-c –
[看到這個!](http://msdn.microsoft.com/en-us/library/vstudio/83fhsxwc .aspx) – MasterMastic
https://docs.microsoft.com/en-us/dotnet/csharp/language-reference/keywords/default –