2012-09-30 26 views
12

W języku C# odniesienie do języka w MSDN definiuje "chroniony wewnętrzny" jako "Dostęp jest ograniczony do bieżącego zestawu lub typów pochodnych od klasy zawierającej". Ale z semantycznego punktu widzenia "chroniony wewnętrzny" brzmi dla mnie jak "chroniony i wewnętrzny", co oznacza, że ​​członek będzie dostępny tylko dla tych klas pochodnych z tym samym zbiorem. Czy istnieje jakiś modyfikator dostępu, który ma znaczenie dla tego samego efektu?chronione wewnętrzne

+0

to zawsze podsłuch mnie zbyt .. Podobne pytanie: http://stackoverflow.com/questions/7000871/internal-protected -property-wciąż dostępny-od-różnych-montażu – nawfal

Odpowiedz

17

C# nie ma żadnego takiego modyfikatora dostępu.

Jednak CLR obsługuje go, jako poziom dostępu FamANDAssem (protected internal jest FamORAssem)

+4

Zabezpieczony wewnętrzny jest obsługiwany w języku C#. Jest chroniona prywatna, dostępna tylko w C++. chroniony wewnętrzny to FamORAssem. chroniony prywatny to FamANDAssem. – BlackWasp

+0

BlackWasp jest poprawny. C# obsługuje chronione wewnętrzne. Zobacz http://msdn.microsoft.com/en-us/library/ms173121(v=vs.110).aspx. – akton

+4

@BlackWasp: Tak właśnie powiedziałem. – SLaks

1

Nie, nie ma takiego modyfikatora. Internal powinno wystarczyć, ponieważ powinieneś być w stanie dowiedzieć się od innych typów tego samego zespołu, co jest legalne, a co nie.

+0

Dzięki! ale próbuję do tego dojść, ponieważ nie jest możliwe zdefiniowanie elementu w taki sposób, aby był dostępny tylko dla klas pochodnych ORAZ w tym samym zespole. Chociaż nie mogę teraz pomyśleć o scenariuszu, w którym przydałby się taki modyfikator dostępu, dobrze jest wiedzieć, że nie ma takiego modyfikatora, który pozwoliłby programistom powiedzieć, że ten członek jest "zarówno chroniony, jak i wewnętrzny" – adfs

+2

@adfs: Możliwość deklarowania metody jako 'internal' * i *' protected' byłaby lepsza niż 'internal' tylko w scenariuszu, w którym metoda powinna przyjmować parametr typu" protected "zagnieżdżonej klasy, szczególnie jeśli jest to chronione klasa miała członków typów wewnętrznych. – supercat