2012-09-30 6 views
12

MSDNのC#言語リファレンスでは、「protected internal」は「アクセスが現在のアセンブリまたは包含クラスから派生した型に限定されている」と定義されています。しかし、意味論的な観点からは、 'protected internal'は私には 'protectedとinternalの両方'のように聞こえます。つまり、同じアセンブリ内にある派生クラスに対してのみアクセスできます。同じ効果を意味するアクセス修飾子はありますか?protected internal

+0

protected internalがFamORAssemある)FamANDAssemアクセスレベルとしてしかし、CLRは、それをサポートしています。..類似の質問:http://stackoverflow.com/questions/7000871/internal-protected -property-still-accessible-from-different-assembly – nawfal

答えて

17

C#にはこのようなアクセス修飾子はありません。

が、これはいつもあまりにも私を盗聴

+4

protected internalはC#でサポートされています。それはC++でのみ利用可能な保護されたプライベートです。 FamorAssemは内部保護されています。保護されたプライベートはFamANDAssemです。 – BlackWasp

+0

BlackWaspが正しいです。 C#は内部保護をサポートしています。 http://msdn.microsoft.com/en-us/library/ms173121(v=vs.110).aspxを参照してください。 – akton

+4

@BlackWasp:それは私が言ったことです。 – SLaks

1

いいえ、このような修飾語はありません。 Internalであれば、同じアセンブリ内の他の型の中から呼び出し可能なものとそうでないものを知ることができるはずです。

+0

ありがとう!私が得ようとしているのは、同じアセンブリ内で派生したクラスにしかアクセスできないような方法でメンバーを定義することはできないということでした。このようなアクセス修飾子を持つシナリオを考えるのは今はできませんが、プログラマが言うことができるような修飾子がないことを知っておいて、このメンバーは「保護され内部的です」 – adfs

+2

@adfs:メソッドが 'protected'ネストされたクラス型のパラメータをとるべきシナリオにおいてのみ、' internal' *と* 'protected'メソッドを宣言できることは' internal'よりも優れています。クラスには内部型のメンバーがありました。 – supercat