在C#中,如果我有一个类A,一个类B,类B继承类A
class A{}
class B:A{}有这么一个函数
void function(ref A a){};
在函数调用的时候
A a =new A();
function(ref a);这个行
A b = new B();
function(ref b);这个报错。
按理说 父类定义的类型,传递子类的值是可以的。为什么这个报错?

解决方案 »

  1.   

    ref B not is ref A
      

  2.   

    没有问题:using System;
    using System.Text;namespace ConsoleApplication1
    {
        class A { }
        class B : A { }
        class Program
        {
            void function(ref A a) { }
            void test()
            {
                A a = new A();
                function(ref a);
                A b = new B();
                function(ref b);
            }        static void Main(string[] args)
            {
            }
        }
    }