gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-02 21:40:19 26 4
gpt4 key购买 nike

我有一个静态成员,它是一个列表,似乎有时会由于某种原因(可能在未捕获的异常之后)重置为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而得到异常(exception)。 (不是 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/

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