'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) {} }
このコードはコンパイルできません。 「ref」および「out」パラメータはサポートできないため、「B」への参照を使用して「Foo2」が呼び出されたとき
この制限の背後にある理由を調べてみましょう:
結論として、ポリモーフィズムはオブジェクト指向プログラミングの強力な機能ですが、カプセル化、型安全性、およびパフォーマンスを考慮すると、'ref' および 'out' パラメーターではサポートされていません。 .
以上がC# の `ref` および `out` パラメーターでポリモーフィズムが機能しないのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。