defaultC#中关键字的用途是什么?- 它是C#3.0中引入的吗?
Answers:
该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获得a的默认值Generic Type。
public T Foo<T>()
{
.
.
.
return default(T);
}
最常见的用法是泛型; 尽管它适用于“常规”类型(例如,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;
}
该默认关键字取决于它的使用环境不同的语义。
第一种用法是在switch语句的上下文中使用,该语句自C#1.0起可用:http :
//msdn.microsoft.com/zh-cn/library/06tc147t(VS.80).aspx
第二种用法是在初始化泛型类型实例时在泛型上下文中使用,该实例自C#2.0开始可用:http :
//msdn.microsoft.com/zh-cn/library/xwth0h0d(VS.80).aspx
“ default”关键字(除了switch-case之外)可帮助您初始化对象的实例,如类,列表和更多类型。由于其通用属性,可在您不知道对象的默认类型时为其指定默认值,因此使用它值作为避免进一步(将来)代码出错的高级方法。