指定参考类型的默认值
答
号default(type)
总是返回同样的事情 - “零”删除“该类型的版本。对于引用类型,这是一个始终设置值为零的对象的句柄 - 相当于null
。对于值类型,这总是所有成员设置为零的结构。
有没有办法来覆盖这种行为 - 语言规范是这样设计的。
编辑:关于你的评论:
只是为了能够说
FirstOrDefault()
,从来没有得到一个空。
我不会在任何情况下推荐这个。用户期望FirstOrDefault()
失败时返回null
。最好是写自己的扩展方法:
static T FirstOrNewInstance<T>(this IEnumerable<T> sequence) where T : class, new()
{
return sequence.FirstOrDefault() ?? new T();
}
不,这是不可能的。你能告诉我们这里的最终目标,也就是为什么你会想要这个功能吗? – Ani 2010-11-01 02:28:24
不,你为什么需要这样做?如果对象为空,只需分配一个新的! – 2010-11-01 02:28:59
只是为了能够说FirstOrDefault()并且永远不会得到空值。猜猜我只会写一个新的扩展方法。 – 2010-11-01 02:30:08