【问题标题】:C# constant property that can only be set once只能设置一次的 C# 常量属性
【发布时间】:2016-08-04 16:46:10
【问题描述】:

我不断发现自己需要一个必须在方法范围之外声明但只能在方法内部分配值的常量。结果是我必须在分配值之前对方法中的值进行空值检查,但此时我无法将常量设为常量。

难道没有可以处理这个问题的原生 C# 修饰符吗?如果没有,它是否存在于类似的语言中?为什么它在 C# 中不存在?

这里有一个类似的帖子:Is there a way of setting a property once only in C#

但它主要侧重于使用 getter 和 setter 进行空值检查

【问题讨论】:

标签: c#


【解决方案1】:

当您想延迟初始化一个值时,请使用 Lazy 实例。这允许您在构造函数中设置Lazy 实例,这意味着该字段可以是readonly,但确保创建对象的方法在需要之前不会被调用,并且它只能初始化该值一次。

【讨论】:

  • 除非有人再次使用 new 关键字。
  • @user3185569 仍然没有再次初始化该字段。这只是创建一个新实例,这正是您希望在 readonly 字段中发生的事情。它可以为每个实例设置一次,而不是每个应用程序一次。如果您需要后者,您只需将其设为static
【解决方案2】:

不可能有一个只能在方法内部设置的类字段。

但是,您可以对只能在构造函数内设置的字段进行限制。其中的关键字称为readonly

【讨论】:

    猜你喜欢
    • 2016-12-04
    • 1970-01-01
    • 1970-01-01
    • 2017-02-02
    • 2010-10-24
    • 2012-05-10
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多