可能的重复项:
如何更改 Default(T) 在 C# 中返回的内容
print(default(int) == 0) //true
同样,如果我有一个自定义对象,它的默认值将为 null。
print(default(Foo) == null) //true
我可以有一个自定义值来表示default(Foo)
而不是空吗?
例如,像这样:
public static override Foo default()
{
return new Foo();
}
这不会编译。谢谢。。
不能覆盖 default(T) 关键字。对于引用类型,它始终为 null,对于值类型,它始终为零。
更多信息
- MSDN - 泛型代码中的默认关键字(C# 编程指南)
好像不像。从文档中:
default
......将为引用类型返回 null,为数值类型返回零。对于结构,它将返回初始化为零或 null 的结构的每个成员,具体取决于它们是值类型还是引用类型。
坦率地说,这不是一个真正的答案,而是一个简单的提及。如果Foo
是一个结构体,那么你可以有这样的东西:
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);
}
}