添加到列表将返回null

时间:2019-04-08 07:26:45

标签: c# discord.net

我正在开发一个系统,用户可以从商店购买商品。每个用户都列在数据库中,当他们购买该项目时,应将其添加到数据库中的列表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);
}

1 个答案:

答案 0 :(得分:-1)

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