更新引用的变量赋值

本文关键字:赋值 变量 引用 更新 | 更新日期: 2023-09-27 18:02:07

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

这是我的:

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个Wrapper,我有更多的类型不仅仅是'Wrapper'。

谢谢

更新引用的变量赋值

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

但是,根据blogbeard的评论,你可以使用字典:

using System.Collections.Concurrent;
ConcurrentDictionary<int, Wrapper> wrapperDictionary;
public Wrapper GetWrapper(int num)
{
    return wrapperDictionary.GetOrAdd(num, _ => new Wrapper());
}