В чем разница между
public static void Main()
и
private static void Main()
в консольном приложении С#? В частности, это относится к методу Main()
(я понимаю различия между public
и private
).
В чем разница между
public static void Main()
и
private static void Main()
в консольном приложении С#? В частности, это относится к методу Main()
(я понимаю различия между public
и private
).
Чтобы выступать в качестве начальной точки в приложении, метод Main
не требуется public
.
Если вы решили сделать его public
, можно было бы его вызывать из других классов или сборок. Обычно вам не нужно это делать, поэтому вы можете сохранить его private
.
Один из возможных вариантов использования public
- позволить автоматическим испытаниям вызывать его.
Разница между ними - единственная разница в модификаторах доступа public
и private
, потому что они действительны. Это полностью зависит от использования приложения, которое можно использовать.
Если вы хотите инициировать точку входа любой внешней программой (т.е. использовать как API для целей тестирования), вам может потребоваться сделать ее общедоступной, чтобы она была доступна.
Если вы знаете, что для приложения нет внешнего использования, тогда лучше сделать его приватным, поэтому внешнее приложение не получит к нему доступ.
Для большинства целей это не имеет значения. Microsoft защищает главную частную жизнь.
Единственное реальное значение при этом (насколько мне известно) заключается в том, что оно будет препятствовать непосредственному вызову метода Main с помощью другой прикладной кодовой базы.
Хорошее обсуждение его доступно здесь
Помимо обычной функции модификатора открытого и закрытого доступа, ничего. Оба являются действительными точками входа.
Смотрите: Почему точка входа разрешена как закрытая? и Почему главный метод закрыт?
Основной помечен как точка входа для выполнения в exe, когда он является приватным, поэтому ничего извне не может получить к нему доступ.
Публикация сделает доступным метод снаружи
Читайте больше разъяснений http://social.msdn.microsoft.com/Forums/vstudio/en-US/9184c55b-4629-4fbf-ad77-2e96eadc4d62/why-is-main-in-c-not-a-public-static-?forum=csharpgeneral
Есть разница, потому что первая из них является общедоступной, а вторая - частной, поэтому, когда вы попытаетесь использовать первую извне класса, она будет работать нормально, но не будет работать со вторым.
Однако нет никакой разницы, если вы пытаетесь сделать одну из них точкой входа в ваше приложение. Метод точки входа может быть открытым или закрытым, это не имеет значения.
public и private являются спецификаторами доступа.
используем
public static void Main()
потому что для выполнения программы вам нужно вызвать свой класс, в котором присутствует этот метод Main(), поскольку для этого вам нужен ваш метод Main(), который будет общедоступным, иначе он не будет доступен вне класса.
И причина, по которой она статична, потому что она должна быть доступна без создания каких-либо объектов этого класса .i.e. на уровне класса.
Частный или публичный оператор - это модификатор доступа, модификатор частного доступа делает его недоступным для внешних объектов, где модификатор открытого доступа делает его доступным для внешних объектов. пример использования:
Скажем, у нас есть класс:
class myClass{
public void test(){
//do something
}
}
Создаем экземпляр этого класса:
myClass mClass=new myClass();
Чтобы получить доступ к этой функции-члену, вы должны пойти:
mClass.test();
Если у него был модификатор частного доступа, вы получили бы ошибку компиляции, заявив, что это недоступно.
И только ради знания, чтобы получить доступ к элементу без создания экземпляра класса, вы также должны сделать этот элемент статическим, например:
class myClass{
public static void test(){
//do something
}
}
Итак, чтобы получить доступ к нему сейчас, просто выполните:
myClass.test();
(Обратите внимание, что любые члены, к которым обращаются в статическом члене, также должны быть статическими)
На основе уровня доступа.
private--> access to own class
public --> open to alll
Например, если вы хотите добавить точку входа, которая может вызывать извне класса или сборки, вы должны установить public
, но если это не importatnt, используйте private
.