通过C#中的索引号调用类中所有实例的属性?
在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
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}");
}