gpt4 book ai didi

c# - 类数组使用产生错误 "NullReferenceException: Object reference not set to an instance of an object"

转载 作者:行者123 更新时间:2023-12-02 10:54:34 25 4
gpt4 key购买 nike

我目前正在为一款名为 Reign of Kings 的游戏开发服务器系统。我正在使用 Oxide 开发人员提供的钩子(Hook)和命令来制作我的服务器系统。回到 PAWN 语言,我们可以做一些事情,比如在数组中枚举玩家数据,将其转换为二维数组——这很酷。像 PlayerData[playerid][data] 和 data 可以是任何东西,从称为 pAdminLevel 的整数到称为 pPassword 的字符串。

我知道在 C# 中,情况有所不同。所以我试图复制这样的方法:

pData[] PlayerData = new pData[MAX_PLAYERS];
public class pData
{
private int _admin;
public int admin { get { return _admin; } set { _admin = value; } }
public void ClearInfo()
{
_admin = 0;
}
}

所以基本上每当我想调用玩家的名字时,我都可以使用 PlayerData[playerid].admin。

但我得到了错误:
5:13 PM [Error] Failed to call hook 'OnPlayerConnected' on plugin 'ServerCommands' (NullReferenceException: Object reference not set to an instance of an object)

经过大量测试后,我绝对确定问题出在我调用 PlayerData[x].admin 和 PlayerData[x].ClearInfo() 的方式上。

最佳答案

您没有初始化新数组的成员。与 C++ 等语言不同,数组的内容是引用类型,因此您的代码与创建指针数组并尝试立即使用数组成员的 C++ 等效。

尝试这样的事情:

pData[] PlayerData = new pData[MAX_PLAYERS];

for(int i=0; i < MAX_PLAYERS; i++)
{
PlayerData[i] = new pData();
}

这将放置一个新的 pData数组的每个元素中的对象,然后您的代码应该按预期工作。

关于c# - 类数组使用产生错误 "NullReferenceException: Object reference not set to an instance of an object",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30353030/

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