OriginalGriff
Две большие public
и private
и все, что они делают, это говорят, сколько из вас класса может быть замечено внешним миром.
Все, что вы объявите как private
доступ к нему возможен только внутри самого класса:
public class MyClass
{
private void myFunction(){}
...
myFunction(); // LEGAL, no problem
...
}
...
MyClass mc = new MyClass();
mc.MyFunction(); // ILLEGAL - no access
Все, что вы объявите как
public
можно получить доступ к любому коду в любом месте.
Остальные падают в середине этих двух:
protected
это означает, что он доступен только внутри класса и в любом классе, производном от класса. Это
private
но с особым доступом к производным классам.
internal
означает
public
классам внутри одной и той же сборки, а также
private
к классам вне сборки. Таким образом, если вы создаете свою собственную библиотеку DLL, все ваши классы в стороне библиотеки DLL могут получить доступ к объектам, но классы, которые ссылаются на вашу библиотеку DLL, не могут их видеть.
protected internal
представляет собой комбинацию
protected
и
internal
- они видны внутри сборки точно так же, как
internal
объекты, но они также видны производным классам снаружи, так же как и
protected