指定引用类型的默认值

时间:2010-11-01 02:25:16

标签: c#

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

2 个答案:

答案 0 :(得分:29)

没有。 default(type)将始终返回相同的内容 - 该类型的“归零”版本。对于引用类型,这是一个始终设置为零的对象的句柄 - 等于null。对于值类型,这始终是所有成员都设置为零的结构。

无法覆盖此行为 - 语言规范就是这样设计的。


编辑:关于你的评论:

  

只是为了能够说FirstOrDefault()并且永远不会得到空。

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

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

答案 1 :(得分:6)

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

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