当我尝试调用此函数时,我得到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();
答案 0 :(得分:2)
您必须使用new
关键字创建类的对象/实例:
MyPlayer_t MyPlayer = new MyPlayer_t();
MyPlayer.ReadInformation();
以下是MSDN Reference来了解C#中的类。
答案 1 :(得分:2)
尝试创建实例,然后调用它。
var player = new MyPlayer_t();
player.ReadInformation();
如果您想按照自己的建议进行实际调用,则该课程必须为static
,请参阅以下C# static vs instance methods
答案 2 :(得分:1)
这是合理的。您首先要创建该类的实例。如下所示:
MyPlayer_t myPlayer = new MyPlayer_t();
然后您可以将其称为ReadInformation
的方法,如下所示:
myPlayer.ReadInformation();
您收到此错误的原因是这行代码
MyPlayer_t MyPlayer;
创建一个可以容纳名为MyPlayer_t
的对象的变量。由于您没有为此变量分配值,因此它会获得默认值null
。然后尝试在名为ReadInformation
的变量中存储的类型上调用名为MyPlayer
的方法。但是,由于MyPlayer
为null
,您会收到此异常。