在.Net中,为什么String.Empty只读而不是常量?我只是想知道是否有人知道该决定背后的原因。
3 回答
蝴蝶不菲
TA贡献1810条经验 获得超4个赞
我认为这里有很多混乱和不良反应。
首先,const字段是static成员(不是实例成员)。
检查C#语言规范的10.4常量。
即使常量被认为是静态成员,常量声明也不需要也不允许使用静态修饰符。
如果public const成员是静态的,则不能认为常量会创建一个新的Object。
鉴于此,以下代码行在创建新Object方面的作用完全相同。
public static readonly string Empty = "";
public const string Empty = "";
这是Microsoft的注释,解释了2之间的区别:
readonly关键字与const关键字不同。const字段只能在该字段的声明中初始化。只读字段可以在声明中或在构造函数中初始化。因此,取决于使用的构造函数,只读字段可以具有不同的值。同样,虽然const字段是编译时常量,但readonly字段可用于运行时常量,...
因此,我发现唯一合理的答案是杰夫·耶茨(Jeff Yates)。
- 3 回答
- 0 关注
- 503 浏览
添加回答
举报
0/150
提交
取消