c# - "x.Groups = list"有效但 "x.Groups.Add(listItem)"抛出空引用异常?

标签 c# asp.net oop

我有一个名为 Permissions 的类,它有几个子类(和一些属性),GroupGroup.Permission

现在,我可以执行以下操作

Permissions u = new Permissions();
u.userId = (Guid)user.ProviderUserKey;
List<int> groups = getGroupsForUserId(u.userId.ToString());

List<Permissions.Group> groupItems = new List<Permissions.Group>();

foreach (int g in groups)
{
    Permissions.Group groupItem = new Permissions.Group();
    groupItem.group_id = g;
    groupItem.Records = getRecordsForGroupId(g);
    groupItem.Permissions = getPermissionsForGroupId(g);

    groupItems.Add(groupItem);
}
u.Groups = groupItems;

但是,我不能这样做:

Permissions u = new Permissions();
u.userId = (Guid)user.ProviderUserKey;
List<int> groups = getGroupsForUserId(u.userId.ToString());

foreach (int g in groups)
{
    Permissions.Group groupItem = new Permissions.Group();
    groupItem.group_id = g;
    groupItem.Records = getRecordsForGroupId(g);
    groupItem.Permissions = getPermissionsForGroupId(g);

    u.Groups.Add(groupItem);
}

我的问题是,为什么?

我创建了一个新的 Permissions.Group 对象,添加了值,然后将其添加到 u 对象的 Groups 列表中。在我看来这应该行得通,但是我假设我没有在类里面连接一些东西?我的类只是一个属性列表 property_name { get;放; 所以真的没有什么异国情调的东西。

尝试后者,我在 u.Groups.Add(groupItem);

行得到一个 NullReferenceException

最佳答案

您可能需要在Permissions 构造函数中初始化Permissions.Groups:

public class Permissions
{
    public Permissions()
    {
         Groups = new List<Group>();
    }

    public ICollection<Group> Groups { get; set; }
}

关于c# - "x.Groups = list"有效但 "x.Groups.Add(listItem)"抛出空引用异常?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10724505/

相关文章:

c# - 为什么 Char.IsDigit 为无法解析为 int 的字符返回 true?

c# - 在 ASP.NET Core 中到达 Controller 之前拦截不良请求

asp.net - 限制未登录用户点击链接

asp.net - 构建Handler时,应该是.ashx还是.axd?

Flutter:如何模块化底部导航栏

c# - ConcurrentDictionary.GetOrAdd() : valueFactory with different signature

C# - Base64 编码的 JPEG 到 Base64 编码的 BMP

asp.net - AntiForgeryToken 的终身和多次使用?

c++ - 为什么我会收到 "void value not ignored as ought to be"错误?

perl - 在 Perl 中,如何调用名称在字符串中的方法?