相关疑难解决方法(0)

为什么'ref'和'out'不支持多态?

请考虑以下事项:

class A {}

class B : A {}

class C
{
    C()
    {
        var b = new B();
        Foo(b);
        Foo2(ref b); // <= compile-time error: 
                     // "The 'ref' argument doesn't match the parameter type"
    }

    void Foo(A a) {}

    void Foo2(ref A a) {}  
}
Run Code Online (Sandbox Code Playgroud)

为什么会发生上述编译时错误?两者refout参数都会发生这种情况.

c# polymorphism out-parameters ref-parameters

123
推荐指数
5
解决办法
1万
查看次数

"ref"关键字和引用类型

我的团队中的某个人偶然发现了引用类型上ref关键字的特殊用法

class A { /* ... */ } 

class B
{    
    public void DoSomething(ref A myObject)
    {
       // ...
    }
}
Run Code Online (Sandbox Code Playgroud)

是否有人理智会做这样的事情?我在C#中找不到这个用途

.net c# ref reference-type pass-by-reference

6
推荐指数
2
解决办法
2225
查看次数