列出类中的类属性c#赋值

本文关键字:赋值 属性 | 更新日期: 2023-09-27 18:16:10

class Program
{
    static void Main(string[] args)
    {
        Posting onjPosting = null;
        List<Posting> objList = null;
        for (int i = 0; i < 100; i++)
        {
            onjPosting = new Posting();
            onjPosting.Key1 = i;
            for (int j = 0; j < 5; i++)
            {
                Choice objChoice = new Choice();
                objChoice.ID = i;
                objChoice.VAL = j;
                onjPosting.GetPostingChoice.Add(objChoice); // GETTING ERROR [ Object reference not set to an instance of an object. ] 
            }
            objList.Add(onjPosting);
        }
    }
}

public class Choice
{
    public int ID { get; set; }
    public int VAL { get; set; }
}    
public class Posting
{
    public int Key1 { get; set; }        
    public List<Choice> GetPostingChoice { get; set; }
}

在循环并赋值时,我得到了错误。如何解决这个问题?请帮帮我。

我的要求是一个父类(张贴),可以包含多个数据列表。

列出类中的类属性c#赋值

你从来没有分配过GetPostingChoice列表,所以它当然是空的。

你可以在构造函数中做:

public class Posting
{
    public Posting()
    {
        GetPostingChoice = new List<Choice>();
    }
    public int Key1 { get; set; }        
    public List<Choice> GetPostingChoice { get; set; }
}

Posting类中添加一个公共构造函数:

public class Posting
{
    public int Key1 { get; set; }        
    public List<Choice> GetPostingChoice { get; set; }
    public Posting()
    {
        GetPostingChoice = new List<Choice>();
    }
}

还有其他错误:

  1. 你没有初始化objList,所以你不能在那里添加。

    List<Posting> objList = null;
    

    所以当你到达:

    时你会得到另一个Null引用
    List<Posting> objList = null;
    
  2. 在你的第二个循环中,你增加i而不是j,所以它永远不会结束。

    for (int j = 0; j < 5; i++)
    

应该是这样的:

Posting onjPosting = null;
List<Posting> objList = new List<Posting>();
for (int i = 0; i < 1; i++)
{
    onjPosting = new Posting();
    onjPosting.Key1 = i;
    for (int j = 0; j < 5; j++)
    {
        Choice objChoice = new Choice();
        objChoice.ID = i;
        objChoice.VAL = j;
        onjPosting.GetPostingChoice.Add(objChoice); // GETTING ERROR [ Object reference not set to an instance of an object. ] 
    }
    objList.Add(onjPosting);
}

既然你要求另一种方法,这只是你可以做到的许多方法之一,看看这个:

List<Posting> objList = new List<Posting>();
Enumerable.Range(0,100)
.Select
(
    (x,i)=>new Posting
    {
        Key1 = i,
        GetPostingChoice = Enumerable.Range(0,5).Select((p,j)=>new Choice{ID = i,VAL = j}).ToList()
    }
);