C# C向基类集合添加派生类

C# C向基类集合添加派生类,c#,collections,C#,Collections,================================================================================ 如果我是正确的,多态性不应该允许我将派生类型存储在 基本类型?为什么这对我没用 对我来说很好。您的问题中的代码缺少一些大括号和其他东西,但一旦修复,它就可以编译并在我的编译器上正常工作。下面是固定代码 public abstract class Person { protected string name;

================================================================================

如果我是正确的,多态性不应该允许我将派生类型存储在
基本类型?为什么这对我没用

对我来说很好。您的问题中的代码缺少一些大括号和其他东西,但一旦修复,它就可以编译并在我的编译器上正常工作。下面是固定代码

  public abstract class Person
   {
      protected string name;

       public Person(string firstName)
      {
         name = firstName;
      }
   {

public BusinessPerson : Person
{
public BusinessPerson(string newName) : base(newName)
      {
      }
}

public class Group : CollectionBase
   {
      public void Add(Person newPerson)
      {
         List.Add(newPerson);
      }
   }

int Main 
{
    Group VariousPeople = new Group();
    VariousPeople.Add(new BusinessPerson("Jack")); // says invalid arguments
}

那个些带有明显语法错误的代码在我的机器上运行良好
internal class Program
{
    private static void Main(string[] args)
    {
        Group VariousPeople = new Group();
        VariousPeople.Add(new BusinessPerson("Jack"));
    }
}

public abstract class Person
{
    protected string name;

    public Person(string firstName)
    {
        name = firstName;
    }
}

public class BusinessPerson : Person
{
    public BusinessPerson(string newName)
        : base(newName)
    {

    }
}

public class Group : CollectionBase
{
    public void Add(Person newPerson)
    {
        List.Add(newPerson);
    }
}