Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/oop/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 在父类中创建chlid类对象_C#_Oop_Object_Inheritance_Subclass - Fatal编程技术网

C# 在父类中创建chlid类对象

C# 在父类中创建chlid类对象,c#,oop,object,inheritance,subclass,C#,Oop,Object,Inheritance,Subclass,我有两个班,一个是家长班,一个是孩子班。我真正想找到的是,我可以在父类中创建子类的对象。我累了,但编译器抛出异常这是我的代码 class b { private c obj; public b() { obj=new c(); } public void show() { obj.show(); } }

我有两个班,一个是家长班,一个是孩子班。我真正想找到的是,我可以在父类中创建子类的对象。我累了,但编译器抛出异常这是我的代码

   class b  { 
        private c obj;
        public b()
        {
            obj=new c();
        }
        public void show()
        {

            obj.show();
        }
        }
        class c : b{ 
        public void show()
        {
        Console.WriteLine("working ");
        }
        }
  b object=new b();
  b.show();
是否有方法在父类中创建子类对象

您可以尝试以下方法:

class b  { 
    private c obj;
    public b()
    {

    }
    public void show(c o)
    {
        obj = o;
        obj.show();
    }
    }
    class c : b{ 
    public void show()
    {
    Console.WriteLine("working ");
    }
    }

    class Program
    {
        static void Main(string[] args)
        {
            c o=new c();
            b bo = new b();
            bo.show(o);
            o.show();
            Console.ReadKey();

        }
    }

可以从父类创建子对象,但不能在构造函数中创建。如果这样做,子对象(也是父对象)将创建另一个子对象,这将创建另一个子对象,依此类推。你做了一个无限循环


可以从父类中的方法创建子对象。例如:

public class Parent {

  private Child _child;

  public void CreateChild() {
    _child = new Child();
  }

  public void Show() {
    _child.Show();
  }

}

public class Child : Parent {

  public void Show() {
    Console.WriteLine("Working");
  }

}

Parent p = new Parent();
p.CreateChild();
p.Show();

它抛出什么“异常”?进程因意外错误而终止编译器不会抛出异常-它们报告编译错误。您当前的代码无法编译,因为首先不能使用
对象
作为标识符。但不清楚这是否是您的实际代码。如果你能给出一个简短但完整的例子,包括编译错误,同时遵循正常的C#命名约定并执行适当的源代码格式以使我们易于阅读,那会有所帮助。严格地说,这并不能回答问题。它没有在父类中创建子对象,也没有说明是否可能。我正在运行时传递子类对象并设置它。然后在那个点上创建对象。在我看来,没有什么大的区别。