【发布时间】:2013-01-07 18:23:51
【问题描述】:
这是惰性初始化字段的语法。
public class MyClass
{
string _cat;
public MyClass(string Category)
{
_cat=Category;
}
MyExpensive _expensive;
public MyExpensive Expensive
{
get
{
LazyInitializer.EnsureInitialized(ref _expensive, () = > new MyExpensive ());
return _expensive;
}
}
}
但是如果我需要使用 run-time ctor params 创建 new MyExpensive 怎么办? (根据流程逻辑)
我不想创建一个标志字段,然后做很多IF's
我的意思是,有时我需要运行new MyExpensive ("picture"),有时需要运行new MyExpensive ("flowers")
我该怎么做?
(不包括为每个类别创建一个惰性字段 - )
【问题讨论】:
-
你是如何得到字符串值的?如果这也是来自调用者,如果您在第二次调用中得到不同的值,您会期望什么?
-
@JonSkeet 将只有一个字符串值参数(在我的情况下)
-
虽然这实际上并没有回答我的任何一个问题......
-
@JonSkeet 我已经编辑了代码。但是我现在可以看到这是一个愚蠢的问题。因为我可以做
new MyExpensive (_cat)。
标签: c# .net .net-4.0 lazy-initialization