C# C-访问时内部静态只读为null

C# C-访问时内部静态只读为null,c#,C#,我有以下代码: internal class FakeInvitationsRepository : InvitationsRepository { internal readonly static Dictionary<Guid, InvitationDbEntity> Data = new Dictionary<Guid, InvitationDbEntity>() { { ... 答复 我不能回答,因为问题被搁置了。值得商榷 多亏了

我有以下代码:

internal class FakeInvitationsRepository : InvitationsRepository
{
    internal readonly static Dictionary<Guid, InvitationDbEntity> Data = new Dictionary<Guid, InvitationDbEntity>()
    {
        { ...
答复 我不能回答,因为问题被搁置了。值得商榷

多亏了托德小姐。答案既愚蠢又直截了当,但有些令人惊讶;我不记得在11年的.NET编程中见过这种情况

数据字段尚未初始化

在初始值设定项中放置断点,整个块变为红色,表明下一步调用了它

NullReferenceException是一个令人费解的问题,因此。邀请为null

当然,我希望在该行停止时初始化该字段,我只是不希望它发生得这么晚,所以假设null导致了我的运行时异常


好了。

从您的调用堆栈中,我可以推断邀请属性是在Select body中计算的。作为调用堆栈上的最后一个,我可以推断null引用是由于邀请为null!而引发的!。我假设Data=NULL与调用堆栈根本不相关!而是一个调试器问题。

堆栈跟踪是什么样子的?我猜您是在初始化类型时看到的,在一些递归初始值设定项中。如果你能发布一个简短但完整的程序来演示这个问题,我相信我们可以解决它…这是一个很好的口号,乔恩。我将在没有任何系统调用的情况下粘贴调用堆栈。*调用,所以只粘贴我的代码。是否有可能数据中更深的部分为null,而IDE中的读数没有显示出来?我在调用堆栈中看到一个lambda方法调用。这可能是一个关闭问题吗?从我所看到的。邀请属性被评估!GetInvestments int id,因此数据不为null,但我们在Select内部。我敢打赌邀请函是空的,你能一步一步地完成你的邀请函吗?
System.Diagnostics.StackTrace t = new System.Diagnostics.StackTrace();
{   at Company.Product.WebAPI.Controllers.RenamedController.<GetInvitations>d__14.MoveNext()
   at Company.Product.WebAPI.Controllers.RenamedController.GetInvitations(Guid id)
   at lambda_method(Closure , Object , Object[] )
   at Company.WebAPI.Product.Areas.RouteDebugger.InspectActionInvoker.InvokeActionAsync(HttpActionContext actionContext, CancellationToken cancellationToken)
   at Company.WebAPI.Product.Areas.RouteDebugger.InspectHandler.<>n__FabricatedMethod12(HttpRequestMessage , CancellationToken )
   at Company.WebAPI.Product.Areas.RouteDebugger.InspectHandler.<SendAsync>d__e.MoveNext()
   at Company.WebAPI.Product.Areas.RouteDebugger.InspectHandler.SendAsync(HttpRequestMessage request, CancellationToken cancellationToken)
}
    FrameCount: 84
    frames: {System.Diagnostics.StackFrame[87]}
    m_iMethodsToSkip: 3
    m_iNumOfFrames: 84