为了账号安全,请及时绑定邮箱和手机立即绑定

为什么String.Empty不是常数?

为什么String.Empty不是常数?

FFIVE 2019-09-21 15:48:02
在.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)。


查看完整回答
反对 回复 2019-09-21
  • 3 回答
  • 0 关注
  • 503 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信