C# 添加到列表将返回null

C# 添加到列表将返回null,c#,discord.net,C#,Discord.net,我正在开发一个系统,用户可以从商店购买物品。每个用户都列在数据库中,当他们购买该商品时,它应该将其添加到数据库中的列表ownedItems中,但是当执行代码行以添加它返回的商品时 System.NullReferenceException:对象引用未设置为实例 物体的形状 userAccount是指数据库中的users部分。这是项目添加到列表中的位置,位于!buy命令,然后返回null: var userAccount = UserAccounts.GetAccount(Context.

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

System.NullReferenceException:对象引用未设置为实例 物体的形状

userAccount是指数据库中的users部分。这是项目添加到列表中的位置,位于!buy命令,然后返回null:

    var userAccount = UserAccounts.GetAccount(Context.User);                    
    userAccount.ownedItems.Add(":motorbike: motorbike");
    UserAccounts.SaveAccounts();
这是在类UserAccount下定义列表的地方

尽管在创建用户帐户时设置为add:iphone:iphone,但它没有。它只是将其设置为null


我建议您将列表的格式如下: List ownedItems1=新列表; ownedItems1.在列表中添加所需内容;

一个说ownedItems1,另一个说ownedItems,是这样吗?请始终包含足够的实际代码,而不仅仅是单行代码。最好是a,这样我们就可以确切地看到发生了什么。你能提供a吗?我已经对代码进行了更好的格式化,为上下文添加了更多的代码,并删除了我在ownedItems中的错误,其中提到了ownedItems。我不确定我是否能提供一个最小的、完整的、可验证的示例,因为它涉及多个不同的类和其他代码部分来使其工作。你知道吗,这是C stackoverflow中最常见的问题?在发布此问题之前,您是否尝试过做任何事情?是的,但它是在这里定义的,所以我不理解为什么它显示为空。List-ownedItems=new-List{:iphone:iphone},这有什么作用而OP的方法没有?这是怎么解决OP的问题的?你什么都没改变。相同的代码不同的实现!
public List<string> ownedItems { get; set; }
       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;
    }
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);
}