ホームページ > バックエンド開発 > C++ > 共分散と違反:これらの概念はプログラミングでどのように異なりますか?

共分散と違反:これらの概念はプログラミングでどのように異なりますか?

Barbara Streisand
リリース: 2025-01-25 03:01:09
オリジナル
737 人が閲覧しました

Covariance vs. Contravariance: How Do These Concepts Differ in Programming?

共分散と違反:プログラミングの明確な区別

共分散と矛盾は、タイプの関係が関数マッピングとデータ構造の入力/出力タイプにどのように影響するかを定義するプログラミングの基本的な概念です。 基本的に、共分散は割り当て可能性の方向を保持しますが、違反はそれを逆転させます

共分散:割り当て可能性の維持

タイプセットで説明しましょう:

<code>{ Animal, Tiger, Fruit, Banana }
{ IEnumerable<Animal>, IEnumerable<Tiger>, IEnumerable<Fruit>, IEnumerable<Banana> }</code>
ログイン後にコピー
マッピングt→iEnumerable

は、割り当て可能性を維持します。 の場合、Tigerのサブタイプである場合、AnimalIEnumerable<Tiger>のサブタイプでもあります。これは、サブタイピングが含まれる要素に適用されるコンテナタイプで一般的です。 IEnumerable<Animal>

違反:割り当て可能性の反転ここで、これらのタイプセットを考慮してください: マッピングt→icomparable

インバリバティの割り当て。

の場合、
<code>{ IComparable<Tiger>, IComparable<Animal>, IComparable<Fruit>, IComparable<Banana> }</code>
ログイン後にコピー
のスーパータイプである場合、

のサブタイプです。 これは、矛盾したタイプが特定のタイプまたは関連するタイプの入力パラメーターを管理する機能的なタイプで頻繁に観察されます。 AnimalTiger重要な違いIComparable共分散は割り当て可能性の方向を支持します。サブタイプの値は、関数入力と出力の両方でスーパータイプの値に割り当てることができます。 対照的に、違反は割り当て可能性を反転させ、出力では入力パラメーターではそうではありません。

以上が共分散と違反:これらの概念はプログラミングでどのように異なりますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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