2017-04-26 3 views
1

構築された型、境界型および無限型の意味? C#5.0の仕様から

4.4構築タイプ

ジェネリック型宣言は、それ自体で、表す多くの異なる種類を形成するために、「青写真」として使用される非結合ジェネリック タイプ 、by 型引数を適用する方法。型引数は、 ジェネリック型の名前の直後に、 山括弧(<と>)内に記述されます。バインドされていないジェネリック型は、 typeof-expression(7.6.11)内でのみ使用できます。少なくとも1つのタイプ 引数を含むタイプは、構成タイプと呼ばれます。構造型は、型名が表示される言語のほとんどの場所で使用される です。 バインドされていないジェネリック型は、typeof-expression (§7.6.11)内でのみ使用できます。
構文型は、式で単純な名前(7.6.2)またはメンバにアクセスするとき(7.6.4)でも使用できます。

「構築型」の概念は、「限定型汎用型」の概念と同じですか?

4.4.3結合および非結合型

用語非結合型は、非ジェネリック型または非結合 ジェネリック型を指します。 バウンドタイプという用語は、非ジェネリックタイプまたは コンストラクトタイプを指します。

バインドされていない型は、型宣言 で宣言されたエンティティを指します。 バインドされていないジェネリック型はそれ自体が型ではなく、 は変数、引数または戻り値の型として使用することも、 を基本型として使用することもできません。非結合ジェネリックタイプ を参照できる唯一のコンストラクトはtypeof式(7.6.11)です。

バインドされていないタイプとバインドされていないタイプの両方ですか?

+0

ここでもJon Skeetの素敵な(関連する)要約http://stackoverflow.com/a/1735060/1663001 – DavidG

答えて

5

「構築型」の概念は、「限定型汎用型」の概念と同じですか?

はい、あなたのタイプミスを修正しました。あなたは "束縛されたジェネリック型"ではなく、 "束縛されたジェネリック型"と言います。

非ジェネリックタイプはバインドされていないバインドタイプですか。

はい。

なぜこの用語は重複/重複/畳み込みですか?

この用語は、仕様書作成者とコンパイラチームの便宜のために発明されたものです。あなたが確認した唯一の冗長性は、に等しいに等しいということです。これは私にはかなり似ています。重複や畳み込みは見られません。

これらの用語が複雑に見える場合は、現代のビジネス・オブ・ビジネスのOO言語のタイプ理論は複雑な問題です。;その専門用語はその複雑さを反映しています。

このように考えてみるといいかもしれません。我々はN N> = 0のため、引数を入力を受け取り、クラスCがあるとします。

  • 概念C-そのテイク-n型の引数結合していないタイプです。
  • コンセプトC-with-nタイプ引数は、バインドタイプです。
  • バインドジェネリック型は型引数で構成されたジェネリック型でなければならないので、私たちは構築タイプそれを呼び出します。

n == 0の場合、Cは結合型と結合型ではありません。

+0

ありがとう。なぜその用語は重複/重複/畳み込まれているのですか? – Tim

関連する問題