指定引用类型的默认值

Ego*_*hin 19 c#

据我所知,默认(对象)'对象'是任何引用类型总是返回null,但是我可以指定默认值是什么吗?例如,我想要default(object)== new object();

Ree*_*sey 30

号 default(type)将始终返回同一件事-该类型的"zero'ed出"版本.对于引用类型,这是一个对象的句柄,总是设置为零值 - 相当于null.对于值类型,这始终是所有成员都设置为零的结构.

没有办法覆盖这种行为 - 语言规范就是这样设计的.


编辑:至于你的评论:

只是为了能说FirstOrDefault(),永远不会得到空.

在任何情况下我都不会推荐这个.用户希望在失败时FirstOrDefault()返回null.编写自己的扩展方法会更好:

static T FirstOrNewInstance<T>(this IEnumerable<T> sequence) where T : class, new()
{
     return sequence.FirstOrDefault() ?? new T();
} 
Run Code Online (Sandbox Code Playgroud)


Tho*_*que 7

对不起,我不是Jon Skeet ......

但无论如何,答案是"不,你不能"

  • 通常Jon Skeet解释了为什么(或者为什么不在这种情况下):) (7认同)
  • Jon Skeet将首先给出快速回答(如"不,你不能"),以便首先得到答案,然后编辑答案以包含原因. (2认同)