指定引用类型的默认值
据我所知,默认(对象)’对象’是任何引用类型总是返回null,但是我可以指定默认值是什么吗? 例如,我想要default(object)== new object();
不, default(type)
将始终返回相同的东西 – 该类型的“零”出版本。 对于引用类型,这是一个始终设置为零的对象的句柄 – 等于null
。 对于值类型,这始终是所有成员都设置为零的结构。
没有办法覆盖这种行为 – 语言规范就是这样设计的。
编辑:关于你的评论:
只是为了能够说
FirstOrDefault()
并且永远不会得到null。
在任何情况下我都不会推荐这个。 用户希望FirstOrDefault()
在失败时返回null
。 编写自己的扩展方法会更好:
static T FirstOrNewInstance(this IEnumerable sequence) where T : class, new() { return sequence.FirstOrDefault() ?? new T(); }
对不起,我不是Jon Skeet ……
但无论如何,答案是“不,你不能”