Main Content

列挙クラスの制限

列挙クラスには、その使用と定義において次のような一部の制限があります。

  • 列挙クラスは暗黙的に Sealed されます。列挙クラスのサブクラスを定義することはできません (それをしてしまうと、セットを拡張してしまうことになるからです)。

  • 値ベースの列挙クラスのプロパティは不変です。プロパティの値を割り当てられるのはコンストラクターのみです。MATLAB®immutable として値ベースの列挙クラスによって定義されたすべてのプロパティの SetAccess 属性を暗黙的に定義します。SetAccess 属性を他のいかなる値にも設定できません。

  • Constant として定義されていない値ベースの列挙クラスによって継承されたすべてのプロパティは、immutable SetAccess をもたなければなりません。

  • ハンドルベースの列挙クラスのプロパティは変更可能です。列挙クラスのインスタンスに対してプロパティの値を設定できます。可変ハンドルと不変値の列挙メンバーを参照してください。

  • 列挙メンバーは、同じクラスによって定義されたかスーパークラスから継承されたプロパティ、メソッド、またはイベントと同じ名前をもつことはできません。たとえば、組み込みの数値スーパークラスから継承する列挙クラスはそのスーパークラスから full メソッドを継承するため、"full" は有効なメンバー名ではありません。

  • 列挙値はコロン (a:b) 演算をサポートしていません。たとえば、FlowRate.Low:FlowRate.High は、たとえ FlowRate クラスが数値スーパークラスから派生する場合でもエラーとなります。

  • 列挙値を定義するクラスは、同じクラスのプロパティを列挙型に制限することはできません。プロパティ値を列挙に制限するには、別の列挙クラスを作成します。プロパティ値の制限の詳細については、制限されたプロパティの例を参照してください。

  • プライマリ列挙メンバーに Hidden 属性が設定されている場合、セカンダリ メンバー (基となる値が同じメンバー) にも Hidden 属性を設定しなければなりません。詳細については、列挙メンバーの非表示を参照してください。

関連するトピック