【发布时间】:2014-01-01 16:54:10
【问题描述】:
为什么有人会这样做:
const object useless = null;
const IEnumerable meaningless = null;
Eric Lippert 说功能在默认情况下是未实现的,每一种可能性都会增加测试、维护等方面的工作量……为什么引用类型的 null 值需要作为常量?
【问题讨论】:
-
这个“功能”可能不是有意的,它可能只是
const功能工作方式的副作用。我想如果说引用类型上不能有const关键字,那将是额外的工作。 -
我想不出为什么有人会正确编写这样的代码,但是,C# 编译器允许这样做似乎是完全合乎逻辑的,因为
null是引用类型的编译时常量. -
在 .Net 4.0、Visual Studio 2010 中,第 2 行无法编译:不能将类型 'IEnumerable' 声明为 const
-
@David 刚刚在 VS 2012 中尝试过。确实如此..
-
即使是值类型的常量也可能毫无用处:
const int Two = 2;。好用与否不取决于语法规则。
标签: c# constants design-decisions