更新引用的变量赋值?

时间:2016-08-11 21:33:31

标签: c# reference pass-by-reference variable-assignment

我搜索了很多但没有找到答案。

这就是我所拥有的:

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个包装器,而且我的类型不仅仅是“包装器”。

谢谢

1 个答案:

答案 0 :(得分:3)

没有办法准确地做你所要求的。

但是,除了Blorgbeard的评论之外,你还可以使用字典:

using System.Collections.Concurrent;

ConcurrentDictionary<int, Wrapper> wrapperDictionary;

public Wrapper GetWrapper(int num)
{
    return wrapperDictionary.GetOrAdd(num, _ => new Wrapper());
}