我正在开发一个系统,用户可以从商店购买商品。每个用户都列在数据库中,当他们购买该项目时,应将其添加到数据库中的列表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);
}
答案 0 :(得分:-1)
我建议您将列表的格式设置如下:
List<string> ownedItems1 = new List<String>();
ownedItems1.Add("What you want in your list");