【发布时间】:2020-09-30 14:05:23
【问题描述】:
我有一个包含许多变量的 c# 类,所有变量都初始化为 null。首次访问时,我想计算它们的值并将其返回(存储它以加快将来的访问)。为此,我编写了类似的代码
private T nullCheck<T>(T value, string how_to_compute) {
if (value == null) {
return compute(how_to_compute);
}
return value;
}
private string _variable1
public string variable1 {
get { _variable1 = nullCheck(_variable1, "someData"); return _variable1; }
set { _variable1 = value; }
}
...
每个变量的代码与variable1相似
有没有更好的方法来做到这一点?像自动创建这些几乎相同的 getter 和 setter 的自定义注解?
【问题讨论】:
-
初始化属性不是更容易吗?您可以使用具有初始值的匿名属性:
public string variable1 { get; set; } = "someData;" -
初始化属性可能需要做很多工作,所以我想卸载它直到有必要(通常大多数属性被忽略)
-
string how_to_compute .. return compute(how_to_compute);- 这有点令人困惑。您如何从字符串中计算值?你如何在这里指定T? -
我认为这是“因过早优化而死”的情况......除非您要创建数十万个该类的实例,否则属性初始化所消耗的资源可以忽略不计。每次访问属性时执行的检查都会消耗更多资源。
标签: c# getter-setter getter