В общем, publicметоды должны соответствовать очень высоким стандартам надежности (не приводить к сбою или повреждению данных из-за неправильного ввода) и осведомленности о безопасности (не позволять неожиданному вводу запускать эксплойт). Но internal, protectedи privateметоды, он часто будет разумно следовать более расслабленный стандартам, так как один имеет полный контроль над тем, что входы каждый метод может получить.
Поскольку параметры, передаваемые publicметоду (возможно, из внешнего источника), считаются менее надежными, чем параметры, полученные из собственной сборки, методы, отмеченные как public, часто обрабатываются анализаторами кода иначе, чем идентичные методы, отмеченные как internal. Так же, как пример, с помощью publicметода анализатор может предупредить вас о проверке, что параметры метода не равны нулю. С помощью internalметодов можно настроить анализатор менее строгим в отношении nullпроверки. Или анализатор может самостоятельно определить, выполнив анализ потока всех исходных файлов для сборки, чтоnullникогда не будет передан конкретному методу в качестве аргумента и, таким образом, определит, что нет необходимости проверять, является ли параметр null. Есть много других примеров того, как анализаторы publicи internalметоды лечения по- разному.
Правильно помечая классы, методы, свойства, поля, интерфейсы и т. Д. С помощью правильных модификаторов доступа, вы правильно сигнализируете анализаторам кода о своем намерении, а затем, взамен, анализатор может дать вам более подходящие предупреждающие сообщения и советы.