С#: Почему я должен использовать модификатор открытого доступа в переменных класса?

Хорошо, я новичок, так что... да, это может быть очень глупый вопрос. Я читал, что если я объявлю переменную или объект без упоминания модификатора доступа (общедоступного, частного и т. д.), то это автоматически сделает его имеющим модификатор доступа Internal (и он будет существовать где угодно в текущем пространство имен).

Итак, почему мне нужно устанавливать свои переменные в классе как Public, чтобы получить их в другом классе (например, в классе моей программы, конечно).


person MasterMastic    schedule 02.07.2011    source источник
comment
Я почти уверен, что по умолчанию используется частный, а не внутренний.   -  person BoltClock    schedule 02.07.2011
comment
по умолчанию для типов верхнего уровня является внутренним   -  person Captain Comic    schedule 02.07.2011
comment
@Captain Comic: Он сказал переменные/объекты, поэтому он, вероятно, имеет в виду поля, а не типы.   -  person BoltClock    schedule 02.07.2011
comment
@Captain Comic, обобщенный вопрос был, в частности: Итак, почему мне нужно устанавливать свои vars в классе как Public, чтобы получить их в другом классе (например, в классе моей программы, конечно).   -  person Steve    schedule 02.07.2011
comment
Да, и я пытался сказать, что он (автор вопроса), вероятно, читал о типах   -  person Captain Comic    schedule 02.07.2011
comment
В сторону: вы упоминаете вары, под которыми, как я предполагаю, вы подразумеваете поля. Поля не должны быть открытыми — они должны быть private. Если вы хотите предоставить доступ к данным, используйте свойство.   -  person Marc Gravell    schedule 02.07.2011


Ответы (1)


Потому что ты не умеешь читать? Ладно, шутки в сторону. Вы сказали, что вы новичок, так что совершенно нормально упускать из виду мелочи.

Я читал, что если я объявляю переменную или объект, не упоминая модификатор доступа (общедоступный, частный и т. д.), он автоматически делает его модификатором внутреннего доступа.

Ах, нет. По умолчанию он частный, НЕ внутренний. По умолчанию используется наиболее разумное значение по умолчанию, а internal по-прежнему допускает множество обращений между классами, что приводит к неправильным методам работы с кодом.

person TomTom    schedule 02.07.2011
comment
Большое спасибо! Я снова прочитал это в книге, и автор ДЕЙСТВИТЕЛЬНО сказал, что это Внутреннее, но да ладно. Спасибо за помощь - person MasterMastic; 02.07.2011
comment
А, поехали. Правило первое: книги не идеальны. Хотя бы вернуться к официальной документации ;) - person TomTom; 02.07.2011
comment
@Ken Мне любопытно узнать, что это за книга? - person Jalal Said; 02.07.2011
comment
Я бы также добавил, что public позволяет использовать эти классы в других сборках. Internal является глобальным в пределах сборки. - person Razor; 02.07.2011