And*_*are 89
该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)
}
}
Run Code Online (Sandbox Code Playgroud)
Meh*_*hin 79
您也可以使用默认值来获取a的默认值Generic Type
.
public T Foo<T>()
{
.
.
.
return default(T);
}
Run Code Online (Sandbox Code Playgroud)
Mar*_*ell 32
最常见的用途是仿制药 ; 虽然它适用于"常规"类型(即default(string)
等),但这在手写代码中并不常见.
但是,我在进行代码生成时会使用这种方法,因为这意味着我不需要对所有不同的默认值进行硬编码 - 我可以default(TypeName)
在生成的代码中找出类型和用法.
在泛型中,经典用法是TryGetValue
模式:
public static bool TryGetValue(string key, out T value) {
if(canFindIt) {
value = ...;
return true;
}
value = default(T);
return false;
}
Run Code Online (Sandbox Code Playgroud)
这里我们必须指定一个值来退出方法,但调用者不应该真正关心它是什么.您可以将此与构造函数约束进行对比:
public static T CreateAndInit<T>() where T : ISomeInterface, new() {
T t = new T();
t.SomeMethodOnInterface();
return t;
}
Run Code Online (Sandbox Code Playgroud)
jri*_*sta 12
该默认关键字取决于它的使用环境不同的语义.
第一种用法是在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
小智 5
“default”关键字(除了 switch-case 之外)可以帮助您初始化对象的实例,例如类、列表和更多类型。使用它是因为它的通用属性,当您事先不知道类型的值时,它可以帮助您分配类型的默认值,以避免进一步(未来)代码中出现错误。
归档时间: |
|
查看次数: |
28636 次 |
最近记录: |