因此,我一直在尝试在 C# 中创建一个列表,其中包含作为类实例化的变量。我对 C# 还很陌生,这只是一个练习,但列表真的让我很困惑!我想知道是否有人能够帮助并告诉我我做错了什么?
这是我的代码:
using System;
using System.Collections.Generic;
class Bird
{
private string _name;
public string Name
{
get { return _name; }
set { _name = value; }
}
public Bird()
{
_name = "Bird";
}
public virtual string makeSound()
{
return "Chirp";
}
}
class Duck : Bird
{
public override string makeSound()
{
return "Quack";
}
}
class Crow : Bird
{
public override string makeSound()
{
return "Squawk";
}
}
class Canary : Bird
{
public override string makeSound()
{
return "Tweet";
}
}
class Program
{
Bird bird = new Bird();
Bird duck = new Duck();
Bird crow = new Crow();
Bird canary = new Canary();
List<Bird> birdArray = new List<Bird>(){bird, duck, crow, canary};
public static void Main(string[] args)
{
for (int i=0; i < birdArray.Length; i++)
{
Console.WriteLine(birdArray[i].makeSound());
}
}
}
提前非常感谢您! <3
你得到这个编译器错误:
字段初始值设定项不能引用非静态字段、方法或 属性“名称”。
您无法将新实例添加到类主体中的数组中。如果允许的话,类中的初始化顺序将决定代码是否有效。
如果您需要初始化实例成员(字段、属性),您应该使用构造函数:
public class Program
{
public Program()
{
Bird bird = new Bird();
Bird duck = new Duck();
Bird crow = new Crow();
Bird canary = new Canary();
birdList = new List<Bird>() { bird, duck, crow, canary };
}
List<Bird> birdList;
}