我不断发现自己需要一个必须在方法范围之外声明的常量,但只能在方法内部赋值。结果是我必须在分配值之前对方法中的值进行空值检查,但是在那时我不能使常量变为常量。
是否有可以处理此问题的本机C#修饰符?如果没有,它是否存在于类似语言中?为什么它不存在于C#中?
这里有一个类似的帖子:Is there a way of setting a property once only in C#
但它主要侧重于使用getter和setter进行空值检查
答案 0 :(得分:5)
如果您想懒惰地初始化值,请使用Lazy
实例。这允许您在构造函数中设置Lazy
实例,这意味着该字段可以是readonly
,但可确保在需要之前调用创建对象的方法,它只能初始化一次值。
答案 1 :(得分:0)
不可能有一个类字段只能在您指定的方法内设置。
但是,您可以限制只能在构造函数中设置的字段。名为readonly
的关键字。