请考虑以下事项:
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)
为什么会发生上述编译时错误?两者ref和out参数都会发生这种情况.
我的团队中的某个人偶然发现了引用类型上ref关键字的特殊用法
class A { /* ... */ }
class B
{
public void DoSomething(ref A myObject)
{
// ...
}
}
Run Code Online (Sandbox Code Playgroud)
是否有人理智会做这样的事情?我在C#中找不到这个用途