print(default(int) == 0) //true
同样,如果我有一个自定义对象,它的默认值为 null。
print(default(Foo) == null) //true
我可以有一个自定义值default(Foo)
而不是 null 吗?
例如,像这样:
public static override Foo default()
{
return new Foo();
}
这不会编译。谢谢..
print(default(int) == 0) //true
同样,如果我有一个自定义对象,它的默认值为 null。
print(default(Foo) == null) //true
我可以有一个自定义值default(Foo)
而不是 null 吗?
例如,像这样:
public static override Foo default()
{
return new Foo();
}
这不会编译。谢谢..
看起来不像。从文档中:
default
... 对于引用类型将返回 null,对于数值类型将返回零。对于结构,它将返回结构的每个成员,根据它们是值类型还是引用类型,初始化为零或空。
坦率地说,这不是一个真正的答案,而是一个简单的提及。IfFoo
是一个结构,所以你可以有这样的东西:
public struct Foo
{
public static readonly Foo Default = new Foo("Default text...");
public Foo(string text)
{
mText = text;
mInitialized = true;
}
public string Text
{
get
{
if (mInitialized)
{
return mText;
}
return Default.mText;
}
set { mText = value; }
}
private string mText;
private bool mInitialized;
}
[TestClass]
public class FooTest
{
[TestMethod]
public void TestDefault()
{
var o = default(Foo);
Assert.AreEqual("Default text...", o.Text);
}
}