default
关键字有什么用处?答案 0 :(得分:84)
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)
}
}
答案 1 :(得分:75)
您也可以使用默认值来获取Generic Type
的默认值。
public T Foo<T>()
{
.
.
.
return default(T);
}
答案 2 :(得分:32)
最常见的用途是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;
}
答案 3 :(得分:11)
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
答案 4 :(得分:3)
&#34;默认&#34;关键字(除了switch-case)可以帮助你初始化一个对象的实例,如类,列表和更多类型它的使用是因为它的通用属性,当你不知道它的值为advance时,它可以帮助你分配类型的默认值避免进一步(未来)代码出错的方法。
答案 5 :(得分:-1)
呼应并强调它在泛型中的用途,除了代码生成之外,别无其他。
如果您必须初始化为默认值(我的书中已经可疑有臭味),请弄清楚。随便吧。