什么是默认(对象); 在C#中做?
谷歌搜索只是关键字,但我偶然发现了一些代码说
MyVariable = default(MyObject);
我想知道这意味着什么...
null
Nullable<T>
以外的值类型,它返回一个零初始值 Nullable<T>
它返回空(伪空)值(实际上,这是第二个项目符号的重新声明,但值得明确) default(T)
的最大用途是泛型,像Try...
模式:
bool TryGetValue(out T value) {
if(NoDataIsAvailable) {
value = default(T); // because I have to set it to *something*
return false;
}
value = GetData();
return true;
}
碰巧,我也在一些代码生成中使用它,初始化字段/变量是一件痛苦的事情 - 但是如果你知道类型:
bool someField = default(bool);
int someOtherField = default(int)
global::My.Namespace.SomeType another = default(global::My.Namespace.SomeType);
对于引用类型, default
关键字将返回null
,对于数值类型,则返回zero
。
对于struct
s,它将返回初始化为零或空值的结构的每个成员,具体取决于它们是值类型还是引用类型。
来自MSDN
Simple Sample code :<br>
class Foo
{
public string Bar { get; set; }
}
struct Bar
{
public int FooBar { get; set; }
public Foo BarFoo { get; set; }
}
public class AddPrinterConnection
{
public static void Main()
{
int n = default(int);
Foo f = default(Foo);
Bar b = default(Bar);
Console.WriteLine(n);
if (f == null) Console.WriteLine("f is null");
Console.WriteLine("b.FooBar = {0}",b.FooBar);
if (b.BarFoo == null) Console.WriteLine("b.BarFoo is null");
}
}
OUTPUT:
0
f is null
b.FooBar = 0
b.BarFoo is null
指定类型参数的默认值。对于引用类型,它将为null,对于值类型,此值为零。
见默认
链接地址: http://www.djcxy.com/p/9119.html