プロパティ アクセサーを 'NotOverridable' プロパティ内で '<アクセス修飾子>' として宣言できません

NotOverridable プロパティの Get ステートメントまたは Set ステートメントには、Private キーワードが含まれています。

Property ステートメントNotOverridablePrivate を組み合わせて指定できない理由は、次のとおりです。

  1. 基底クラスのプロパティやプロシージャをオーバーライドしていないプロパティやプロシージャには、既定で NotOverridableが設定されます。

  2. しかし、基底クラスのプロパティやプロシージャをオーバーライドした派生クラスのプロパティやプロシージャには、既定で Overridableが設定されます。 オーバーライドの階層構造を終了するには、 NotOverridableでオーバーライドを宣言します。 このコンテキストは、 NotOverridableが使用できる唯一のものです。 つまり、NotOverridableOverridesが設定されます。

  3. 基底クラスのプロパティまたはプロシージャが Privateとして宣言されている場合、派生クラスはそのプロパティまたはプロシージャにアクセスできないため、それをオーバーライドできません。 このため、 PrivateOverridableと組み合わせて使用することはできません。

  4. プロパティやプロシージャをオーバーライドするには、オーバーライドしているプロパティやプロシージャとシグネチャが同じで、アクセス レベルも同じでなければなりません。 つまり、オーバーライドしているプロパティやプロシージャには Privateを指定できないということです。オーバーライド可能なプロパティやプロシージャには、 Privateを指定できないからです。

  5. NotOverridable を指定できるのは、オーバーライドしているプロパティやプロシージャだけです。そのため、これを Privateと組み合わせて指定することはできません。

同じ理由から、オーバーライドしているプロパティの個別のプロパティ プロシージャ (Get および Set) を Privateにすることはできません。

エラー ID: BC31106

このエラーを解決するには

  • Private キーワードを Get ステートメントまたは Set ステートメントから削除するか、 Overrides キーワードまたは NotOverridable キーワードを、 Property ステートメントから削除します。

関連項目