C#默认关键字与默认成员

时间:2018-07-02 15:52:41

标签: c# .net

当结构类型提供与C#default关键字提供的值等效的Default成员时,两者之间有区别吗?如果没有区别,是否有理由优先选择一个?

例如:

System.Reactive.Unit.Default

default(System.Reactive.Unit)

1 个答案:

答案 0 :(得分:3)

您知道default的作用吗?它返回给定类型的默认值。对于类之类的引用类型,它始终为null

System.Reactive.Unitstruct,因此永远不会是null的值类型。在这种情况下,default返回”,该值是通过将所有值类型字段设置为默认值而将所有引用类型字段设置为null而产生的值”

是的,在这种情况下,它与Default属性返回的内容相同,因为无参数构造函数执行的操作相同:

static readonly Unit _default = new Unit();

/// <summary>
/// Gets the single unit value.
/// </summary>
public static Unit Default { get { return _default; } }

但这更多是偶然的。如果您不知道运算符或表达式的作用,请先阅读文档。否则,您将无法决定自己需要什么。