通过C#中的索引号调用类中所有实例的属性?

通过C#中的索引号调用类中所有实例的属性?,c#,C#,在C#中,是否可以从一个类创建多个对象,并通过索引号引用每个实例 下面是我尝试做的一个例子: public class movie { public string name; } class Program { static void Main(string[] args) { movie[] myMovie = new movie[3]; myMovie[0].name = "Harry Potter"; myMov

在C#中,是否可以从一个类创建多个对象,并通过索引号引用每个实例

下面是我尝试做的一个例子:

public class movie
{

    public string name;

}
class Program
{
    static void Main(string[] args)
    {
        movie[] myMovie = new movie[3];

        myMovie[0].name = "Harry Potter";
        myMovie[1].name = "Lord of The Rings";
        myMovie[2].name = "Star Wars";

        for (int i = 0; i < 3; i++)
        {

            Console.WriteLine(myMovie[i].name);

        }
    }
}
公共类电影
{
公共字符串名称;
}
班级计划
{
静态void Main(字符串[]参数)
{
电影[]我的电影=新电影[3];
myMovie[0]。name=“哈利波特”;
myMovie[1]。name=“指环王”;
myMovie[2]。name=“星球大战”;
对于(int i=0;i<3;i++)
{
Console.WriteLine(myMovie[i].name);
}
}
}
你就快到了

当您执行
movie[]myMovie=new movie[3]
时,您正确地创建了一个包含3个
movie
元素的数组,但默认情况下,这些元素中的每一个都将为
null
。这意味着,如果您尝试执行,例如,
myMovie[0]。name=“…”
,您将得到一个
NullReferenceException

您需要实例化三个独立的
movie
实例,并将它们分配给数组中的相应元素。您可以手动执行此操作:

movie[] myMovie = new movie[3];
myMovie[0] = new movie();
myMovie[1] = new movie();
myMovie[2] = new movie();
但是,使用
for
循环是一种更简单的方法:

movie[] myMovie = new movie[3];
for (int i = 0; i < movie.Length; i++)
{
    myMovie[i] = new movie();
}
这使用了and的语法。

是的,您可以有一个实例集合;在您的情况下,它可以是
列表

static void Main(字符串[]args)
{
//电影集(空)
List myMovie=新列表();
//让我们在收藏中添加一些电影
添加(新电影(){name=“Harry Potter”});
添加(新电影(){name=“指环王”});
添加(新电影(){name=“星球大战”});
//检查收集的时间到了
WriteLine($“我们的收藏中有{myMovie.Count}部电影”);
Console.WriteLine(“它们是:”);
//myMovie[i]返回集合中的第i部电影
for(int i=0;i
这是可能的,您已经做到了。问题是什么?@ChetanRanpariya:OP目前还没有创建任何
电影
实例。他们的代码将失败,出现NullReferenceException。我得到了正在工作的对象列表。非常感谢你!
movie[] myMovie = new movie[]
{
    new movie()
    {
        name = "Harry Potter",
    },
    new movie()
    {
        name = "Lord of the Rings",
    },
    new movie()
    {
        name = "Star Wars",
    }
};
  static void Main(string[] args)
  {
      // Collection of movies (empty) 
      List<movie> myMovie = new List<movie>();

      // Let's add some movies into the collection
      myMovie.Add(new movie() {name = "Harry Potter"});
      myMovie.Add(new movie() {name = "Lord of The Rings"});
      myMovie.Add(new movie() {name = "Star Wars"});

      // Time to inspect the collection 
      Console.WriteLine($"We have {myMovie.Count} movies in the collection");
      Console.WriteLine("They are:"); 

      // myMovie[i] returns i-th movie within the collection 
      for (int i = 0; i < myMovie.Count; ++i)  
        Console.WriteLine($"  {i + 1}. {myMovie[i].name}");
  }