2015-10-23 3 views
-2

Я всегда думал (предположил), что метод Main был статичным, потому что у вас не может быть нескольких его экземпляров (исправьте меня, если это не так). Метод Main является начальной точкой вашей программы, и, следовательно, вы можете иметь только один.Почему основной метод программы статичен?

Так что, если у меня есть

class Program 
{ 

    static void Main(String[] args) 
    { // something 
    } 

} 

class OtherClass 
{ 

    void Test() 
    { 
     Program p1 = new Program(); 
     Program p2 = new Program(); 
     Program p3 = new Program(); 
     Program p4 = new Program(); 

    } 

} 

все экземпляры программы будут одни и те же Main метод и так всегда будет одна начальная точка.

Правильно ли я? Потому что я просто искал это из любопытства и нашел ОТЛИЧНЫЕ ответы на него в Интернете.

Является ли это объяснение ТАКЖЕ правильным, если основной метод статичен?

+0

На каком языке это? –

+0

Я не знал, что это важно. концепция основного метода одинакова для каждого языка. но C# – Ixcioran35

+0

Вы можете вызывать вызовы только в классе, не создавая экземпляры, когда методы являются 'static'. Но ваш пример немного странный – Marged

ответ

1

Если метод точки входа не был static, кому-то нужно было бы создать объект первым. Возникает вопрос: создать объект класса?

Я всегда думал (предполагается), что главный метод был статическим, потому что вы не можете иметь несколько экземпляров

Вы не можете иметь экземпляры методов. Методы находятся в разделе Code библиотеки DLL и не копируются в кучу. Вы можете использовать только несколько потоков в одном и том же методе.

Главный метод - это начальная точка вашей программы, и, следовательно, у вас может быть только один.

Как и прежде: если мы рассматриваем подписи, существует только один метод, независимый, если он статичен или нет, потому что они не создаются.

все экземпляры программы будут одни и те же основной метод ...

Зависит от того, что вы понимаете под термином «доля». Все объекты будут иметь метод, да.

... и поэтому всегда будет одна начальная точка.

Причина, по которой это неправильно. У вас много примеров Program, но это не имеет значения для количества методов.

+0

Если CLR может найти класс, содержащий основной метод, он может определенно создать экземпляр класса. Частные конструкторы кажутся более серьезной проблемой.Не говоря уже о том, что объекты можно повторно использовать, и CLR больше не будет использоваться для объекта после вызова main, поэтому функциональный подход кажется более логичным. –

+0

@VinceEmigh: как он найдет главный метод? На основании чего критика? –

+1

Исходя из тех же критериев, что и статический основной метод, за исключением того, что он является статическим методом. Однако я вижу большую проблему в случаях, когда у соответствующего класса нет конструктора без параметров; не зная, какие аргументы должны пройти, CLR может * не * «определенно создать экземпляр класса», как это было предложено @VinceEmigh. –

 Смежные вопросы

  • Нет связанных вопросов^_^