gpt4 book ai didi

c# - 静态变量在一段时间后重置为 null

转载 作者:行者123 更新时间:2023-12-02 04:42:24 24 4
gpt4 key购买 nike

我有一个 static 成员,它是一个列表,它似乎有时会由于某种原因(可能是在未捕获的异常之后)重置为 null。这是我的代码:

public abstract partial class MyClass
{
private static List<MyClass> Types;

static MyClass()
{
Types = new List<MyClass>();
Types.Add(new Myclass(0));
Types.Add(new Myclass(1));
}


public static MyClass GetMyClass(int id)
{
return Types.Single(x => x.id == id);
}
}

GetMyClass 方法将触发一个null 引用异常。在我的代码中,我没有将此成员设置为 null。你有想法吗?

如果有帮助的话,这里是完整的代码:

public partial class TestRequest
{
public abstract partial class TrType
{
private static List<TrType> Types;

static TrType()
{
Types = new List<TrType>();
Types.Add(TrType.Real.Instance);
Types.Add(TrType.Template.Instance);
}
protected int idTrType;

public static TrType GetTrType(int id)
{
return Types.Single(x => x.idTrType == id);
}

public int IdTrType
{
get { return idTrType; }
set { idTrType = value; }
}

public abstract void Launch(TestRequest tr);
}
}

// In another file.

public partial class TestRequest
{
public partial class TrType
{
public class Real : TestRequest.TrType
{
private static Real instance;
public const int ID = 1;

protected Real()
{
idTrType = ID;
}

static Real()
{
instance = new Real();
}

public static Real Instance
{
get { return instance; }
set { instance = value; }
}

public override void Launch(TestRequest tr)
{
// do something
}
}
}
}

最佳答案

我相信您会因为 Single 而遇到异常. (这不是 NRE)

The Single(IEnumerable) method throws an exception if the input sequence is empty. To instead return null when the input sequence is empty, use SingleOrDefault.

尝试:

 return Types.SingleOrDefault(x => x.id == id);

如果没有找到,将返回 null。但是如果针对 id

找到多个项目,您仍然会得到一个异常

关于c# - 静态变量在一段时间后重置为 null,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20568890/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com