Class pointer c#

本文关键字:pointer Class | 更新日期: 2023-09-27 18:34:40

我想知道是否可以在 C# 中创建指向基类的类指针。然后,您可以将其设置为任何下类。如C++:例如:

class Base
{
   virtual void get() = 0;
}
class A : public Base
{
   void get();
}
class B : public Base
{
   void get();
}
main
{
   int i = 0;
   Base *base;
   if(i==0)
      base = new A();
   else
      base = new B();
}

Class pointer c#

在 C# 中,所有类都是引用类型,因此只需使用普通声明即可。换句话说,就好像类类型的所有变量都被声明为classname&(以C++术语表示(。

namespace Demo
{
    abstract class Base // Abstract means derived classes must implement.
    {
        public abstract void SomeVirtualMethod();
    }
    class Derived1 : Base
    {
        public override void SomeVirtualMethod()
        {
            // Do something.
        }
    }
    class Derived2 : Base
    {
        public override void SomeVirtualMethod()
        {
            // Do something.
        }
    }
    class Program
    {
        static void Main()
        {
            int i = 0;
            Base b;
            if (i == 0)
                b = new Derived1();
            else
                b = new Derived2();
            b.SomeVirtualMethod();
        }
    }
}