文字列としてエンコードされます。埋め込むことはできません。0x0000.ただし、ほとんどの言語に型名に関する追加の制約が存在します。すべての比較はバイト単位で行われるため、大文字と小文字を区別し、ロケールに依存しません。ファイルに分割できる場合もあります)。つの名前空間内で一意である必要があります。型が完全に識別されるようにするため、その型名は、その型の実装を含んでいる名前空間によって修飾される必要があります。Interfaces型は、別の型から値と動作を継承できます。共通型システムでは、複数の基本型から継承する型を作成することはできません。type.型は任意の数のインターフェイスを実装できます。型にインターフェイスを実装するには、そのインターフェイスのすべての仮想メンバーをその型に実装する必要があります。仮想メソッドは派生型によって実装でき、静的または動的に呼び出すことができます。Membersランタイムでは、型の動作と状態を指定する型のメンバーを定義できます。型のメンバーには、次のようなものがあります。typesフィールドFieldsフィールドは、型の状態の一部を表し、格納するものです。フィールドは、ランタイムがサポートする任意の型にすることができます。いずれかに設定されます。アクセサーを使用するのが一般的です。種類に分けることができます。その値は、デザイン時に割り当てられます。キーワードを使用して定義されません。keyword.読み取り専用の変数。その値は、クラスのコンストラクターで割り当てることができます。つの用法を示しています。8/18/1974プロパティPropertiesプロパティは、型の値または状態に名前を付け、そのプロパティの値を取得または設定するためのメソッドを定義します。プロパティは、プリミティブ型、プリミティブ型のコレクション、ユーザー定義型、ユーザー定義型のコレクションにすることができます。多くの場合、プロパティは、型のパブリックなインターフェイスを、その型の個々の実装とは切り離すために使用されます。フィールドに割り当てる値を事前に検証したりすることが可能です。後者のパターンを説明する例を次に示します。メソッドが含まれています。メソッドが含まれています。method.メソッドMethodsメソッドは、その型で利用できる操作を表します。メソッドのシグネチャは、そのメソッドのパラメーターの型および戻り値の型として許可される型を示します。value.ほとんどのメソッドでは、メソッド呼び出しに必要なパラメーターの厳密な個数が定義されていますが、いくつかのメソッドは可変個のパラメーターをサポートしています。明示的な使用を不要にするキーワードがあります。unnecessary.コンストラクターConstructorsコンストラクターは、クラスまたは構造体の新しいインスタンスを作成する特殊なメソッドです。他のメソッドと同様に、コンストラクターには、パラメーターを指定することができます。コードに明示的にコンストラクターが定義されていない場合は、コンパイラによってパラメーターなしのコンストラクターが追加されます。コンパイラが、パラメーターなしのコンストラクターを生成しません。コードでコンストラクターが定義される場合は、それらのコンストラクターがパラメーター化されている必要があります。構造体ではパラメーターなしのコンストラクターを定義できず、コンパイラは、構造体および他の値型のいずれに対しても、パラメーターなしのコンストラクターを生成しません。すべての値の型には暗黙的なパラメーターなしのコンストラクターがあります。このコンストラクターは、共通言語ランタイムによって実装され、構造体のすべてのフィールドを既定の値に初期化します。定義し、イベントへのサブスクライブ、イベントからのサブスクライブ解除、およびイベントの発生用のメソッドを定義します。多くの場合、イベントは、他の型に対して状態の変更を通知するために使用されます。詳細については、「イベント」を参照してください。Types入れ子にされた型とは、他の型のメンバーである型です。入れ子にされた型はその親の型と密に結合されているため、汎用型としては使用できません。メンバーに公開されません。members.入れ子にされた型は、混乱を招くおそれがあるため、特別な理由がない限り、パブリックに参照可能にすることはお勧めできません。適切にデザインされたライブラリでは、入れ子にされた型を使ってオブジェクトをインスタンス化したり、変数を宣言したりすることが必要になることはほとんどありません。Members共通型システムでは、型のメンバーにさまざまな特性を適用できますが、各言語で、これらの特性がすべてサポートされている必要はありません。メンバーの特性について次の表で説明します。型はメソッドの実装を提供しません。抽象メソッドを継承または実装する型は、そのメソッドの実装を提供する必要があります。唯一の例外は、派生型自体が抽象型である場合です。すべての抽象メソッドは仮想メソッドです。メンバーのアクセシビリティを次のように定義します。member:privateprivateメンバーが含まれているのと同じ型の内部、またはその型に入れ子にされた型の内部からだけアクセスできます。type.familyfamilyメンバーが含まれているのと同じ型の内部、およびその型を継承した派生型からアクセスできます。it.アセンブリassembly型が定義されているアセンブリ内でだけアクセスできます。アクセスの両特性を満たす型からだけアクセスできます。アクセスのいずれかの特性を満たす型からだけアクセスできます。access.publicpublicすべての型からアクセスできます。その仮想メソッドを派生型ではオーバーライドできません。値を初期化することだけでき、初期化後の書き込みは実行できません。キーワードはありません)。このようなメンバーについては、型を使用するオブジェクトと同数のコピーがメモリ内に格納されます。このフィールドには、組み込みの値型の、コンパイル時点の固定値が割り当てられます。フィールドを定数と呼ぶこともあります。メンバーが、同じシグネチャを持つ継承メンバーとどのようにやり取りするかを定義します。signature:newslotnewslot同じシグネチャを持つ継承されたメンバーを隠ぺいします。signature.overrideoverride継承された仮想メソッドの定義を置き換えます。メンバーは、型の特定のインスタンスではなく、そのメンバーが定義されている型に属します。メンバーは型がインスタンス化されていなくても存在し、その型のすべてのインスタンスによって共有されます。メソッドは、派生型で実装でき、静的または動的に呼び出すことができます。(コンパイル時に判明する型ではなく)、メソッドのどの実装が呼び出されるかが決定されます。仮想メソッドを静的に呼び出すには、目的のバージョンのメソッドを使用する型に、変数をキャストする必要が生じる場合があります。method.オーバーロードOverloading型のメンバーには、それぞれ固有のシグネチャがあります。つの型の中で定義できます。以上のメソッドが定義されている場合、そのメソッドはオーバーロードされている、と言います。メソッドがオーバーロードされています。