如何创建一个包含从 C# 中的类实例化的变量的列表/数组?

问题描述 投票:0回答:1

因此,我一直在尝试在 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

c# list oop inheritance polymorphism
1个回答
0
投票

你得到这个编译器错误:

字段初始值设定项不能引用非静态字段、方法或 属性“名称”。

您无法将新实例添加到类主体中的数组中。如果允许的话,类中的初始化顺序将决定代码是否有效。

如果您需要初始化实例成员(字段、属性),您应该使用构造函数:

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;
}
© www.soinside.com 2019 - 2024. All rights reserved.