'ref' 和 'out' 参数中的多态性限制
多态性是面向对象编程中的基本概念,允许对象具有不同的类型类型被视为公共超类型的对象。但是,当涉及到“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) {} }
此代码无法编译当通过引用“B”调用“Foo2”时,因为“ref”和“out”参数不支持
让我们探讨一下这个限制背后的原因:
总而言之,虽然多态性是面向对象编程的一个强大特性,出于封装、类型安全和性能的考虑,不支持 'ref' 和 'out' 参数。
以上是为什么多态性不能与 C# 中的'ref”和'out”参数一起使用?的详细内容。更多信息请关注PHP中文网其他相关文章!