添加到列表将返回 null



我正在开发一个用户可以从商店购买商品的系统。每个用户都列在数据库中,当他们购买该项目时,它应该将其添加到数据库中ownedItems列表中,但是当执行代码行以添加它返回的项目时

System.NullReferenceException:对象引用未设置为实例 的对象

userAccount是指数据库中的用户部分。这是将项添加到列表中的位置,在 !buy 命令内,然后返回 null:

    var userAccount = UserAccounts.GetAccount(Context.User);                    
    userAccount.ownedItems.Add(":motorbike: motorbike");
    UserAccounts.SaveAccounts();

这是在类UserAccount下定义列表的地方

public List<string> ownedItems { get; set; }

如果指定用户的userAccount不存在,则在此处创建列表:

       private static UserAccount CreateUserAccount(ulong id)
    {
        var newAccount = new UserAccount()
        {
            ID = id,
            Level = 0,
            XP = 0,
            RequiredXP = 150,
            Bank = 50,
            Cash = 50,
            ownedItems = new List<string> { ":iphone: iPhone"  }, //this is where ownedItems is defined
        };
        accounts.Add(newAccount);
        SaveAccounts();
        return newAccount;
    }

尽管在创建userAccount时将其设置为添加":iphone:iPhone",但事实并非如此。它只是将其设置为 null .

public static void SaveAccounts()
{
    DataStorage.SaveUserAccounts(accounts, accountsFile);
}
public static void SaveUserAccounts(IEnumerable<UserAccount> accounts, string filePath)
{
    string json = JsonConvert.SerializeObject(accounts, Formatting.Indented);
    File.WriteAllText(filePath, json);
}

我建议你将列表格式化如下: List<string> ownedItems1 = new List<String>(); ownedItems1.Add("What you want in your list");

相关内容

  • 没有找到相关文章

最新更新