ホームページ > バックエンド開発 > C++ > C#はリターンタイプの共分散をサポートしますか?それをどのように達成できますか?

C#はリターンタイプの共分散をサポートしますか?それをどのように達成できますか?

Linda Hamilton
リリース: 2025-01-29 15:41:09
オリジナル
755 人が閲覧しました

Does C# Support Return Type Covariance, and How Can It Be Achieved?

返品タイプのコラボレーションのリターンタイプ:サポートと実装

C#のリターンタイプにより、デリバティブクラスはベースクラスよりも具体的なタイプを返すことができます。この機能により、専門的な行動の両方を提供し、階層構造の完全性を維持できる方法を作成できます。

例を見てみましょう:

このシーンでは、

クラスに文字列を返す方法があり、そのMeowコールが非常に便利であることを指定する方法があります。ただし、C#は戻り型の調整を直接サポートしていません。
<code class="language-csharp">public abstract class Animal
{
    public abstract string GetName();
}

public class Cat : Animal
{
    public string GetMeow();
}</code>
ログイン後にコピー

2011年の最初の回答では、C#は共同の変更を返すことをサポートしていませんでした。公務員(CLR)の制限により、将来それを実現することはほとんどありませんでした。ただし、C#の最新バージョンでは、この状況が変わりました。リンクの記事「Cathttps://www.php.cn/link/40f4d60542d86344e5711c7a5584832

共同リターン」を参照してください。

return Type CO -Changesを導入する前に、1つの解決策は、派生クラスの返品値を取得するための中間法を導入することです。

このテクノロジーを使用すると、

を取得し、この例で文字列を返すことができます。
<code class="language-csharp">public abstract class Animal
{
    public abstract object GetContents();
    public Animal Contents() { return (Animal)GetContents(); }
}

public class Cat : Animal
{
    protected override object GetContents() { return this; }
    public new string Contents() { return GetMeow(); }
}</code>
ログイン後にコピー

C#9.0の前のバージョンは、戻り型の調整を直接サポートしていませんが、議論されるソリューションは、必要な動作を実現する方法として使用できます。ただし、C#のより高いバージョンでは、リターンタイプの調整の正式な実装は、よりエレガントで簡潔なソリューションを提供することに注意する必要があります。 Cat

以上がC#はリターンタイプの共分散をサポートしますか?それをどのように達成できますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート