我搜索了很多但没有找到答案。
这就是我所拥有的:
Wrapper _wrap1;
Wrapper _wrap2;
public Wrapper GetWrapper(int num)
{
Wrapper cachedWrapper = num == 1 ? _wrap1 : _wrap2;
if(cachedWrapper == null)
{
cachedWrapper = new Wrapper();
}
return cachedWrapper;
}
我知道' cachedWrapper
'是一个新参考,对_wrap1
或_wrap2
无效。
我正在寻找一种优雅的方式来更新这些字段,而无需额外的if语句。
我的班级不仅仅包括2个包装器,而且我的类型不仅仅是“包装器”。
谢谢
答案 0 :(得分:3)
没有办法准确地做你所要求的。
但是,除了Blorgbeard的评论之外,你还可以使用字典:
using System.Collections.Concurrent;
ConcurrentDictionary<int, Wrapper> wrapperDictionary;
public Wrapper GetWrapper(int num)
{
return wrapperDictionary.GetOrAdd(num, _ => new Wrapper());
}