【问题标题】:NullReferenceException When calling class function c# [duplicate]NullReferenceException当调用类函数c#[重复]
【发布时间】:2014-09-09 08:35:22
【问题描述】:

当我尝试调用此函数时,我得到 NullreferenceException,如果代码看起来很奇怪,那是因为我正在从 c++ 翻译成 c#。

public class MyPlayer_t
{
    int pLocal;
    public int Team;
    public int Health;
    public float[] Position = new float[3];

    public void ReadInformation()
    {
        pLocal = Mem.ReadInt(Client + playerBase);
        Team = Mem.ReadInt(pLocal + teamOffset);
        Health = Mem.ReadInt(pLocal + healthOffset);
        for (int i = 0; i < 3; i++)
        {
            Position[i] = Mem.ReadFloat(pLocal + Pos);
        }
    }
}

MyPlayer_t MyPlayer;

// This is how I call it
MyPlayer.ReadInformation();

【问题讨论】:

    标签: c# class nullreferenceexception


    【解决方案1】:

    您必须使用 new 关键字创建类的对象/实例:

     MyPlayer_t MyPlayer = new MyPlayer_t();
     MyPlayer.ReadInformation();
    

    这里是MSDN Reference 了解 C# 中的类。

    【讨论】:

      【解决方案2】:

      尝试创建一个实例,然后调用它。

      var player = new MyPlayer_t();
      player.ReadInformation();
      

      如果您想按照您的建议实际调用它,则该类需要为static,请参阅以下C# static vs instance methods

      【讨论】:

        【解决方案3】:

        这是合理的。您首先创建了一个类的实例。如下:

        MyPlayer_t myPlayer = new MyPlayer_t();
        

        然后你可以调用它的方法ReadInformation,如下所示:

        myPlayer.ReadInformation();
        

        你得到这个错误的原因是这行代码

        MyPlayer_t MyPlayer;
        

        创建一个变量,该变量可以保存一个名为MyPlayer_t 的对象。由于您为此变量分配值,因此它会获得它的默认值,即null。然后,您尝试对存储在名为MyPlayer 的变量中的类型调用名为ReadInformation 的方法。但是,由于 MyPlayernull,因此您会遇到此异常。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2016-06-08
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多