2015-08-15 3 views
0

Я довольно новичок в программировании на C#, и я все еще участвую. Мне было интересно, если есть какая-то особая причина не использовать статический модификатор при создании метода, для меня это выглядит намного проще. Я попытался взглянуть на MSDN, но это не очень помогает, если я не знаю, что означает половина слова.Есть ли причина не использовать статический модификатор в C#?

Например это:

using System; 

namespace StaticModifier 
{ 
    class Program 
    { 
     static void Main(string[] args) 
     { 
      SayHi(); 
     } 

     static void SayHi() 
     { 
      Console.WriteLine("Hi"); 
     } 
    } 
} 

Кажется гораздо проще, чем это:

using System; 

namespace StaticModifier 
{ 
    class Program 
    { 
     static void Main(string[] args) 
     { 
      Program p = new Program(); 
      p.SayHi(); 
     } 

     void SayHi() 
     { 
      Console.WriteLine("Hi"); 
     } 
    } 
} 

Так будет ли кто-нибудь готов объяснить? Имейте в виду, что я довольно новый, поэтому, пожалуйста, держите это просто :)

+0

Обратите внимание, что я уже пробовал оглядываться на stackoverflow, но большинство ответов было для меня продвинутым. –

+3

Прочтите немного о объектно-ориентированном программировании, классах и экземплярах класса - причина скоро станет очевидной. – Chris

+0

Вы можете использовать его так часто, как хотите; Я делаю. Только не заставляйте себя перекручивать естественную логику! Ваш пример явно не имеет никакого смысла. – TaW

ответ

0

Нестатический метод класса Program предоставляет текущий экземпляр класса Program..

С Program не содержит переменных или свойств, которые используются, вам не нужно приставать к вашему CPU с ненужными объектами.

И Program p = new Program(); не так, как вы могли бы создать свою «Программу». Метод Main() является статическим и обычно содержится в статическом классе со статическими методами. Вы не можете вызывать динамические методы из статического метода, поскольку экземпляр объекта отсутствует.

TL; DR

Если вы хотите передать this (текущий объект) к методу и ваш метод использует свои свойства, то не использовать статические. В противном случае нет абсолютно никакой причины не использовать static!

0

Вы бы не использовали статический модификатор, если бы у вас был класс, для которого потребовалось бы более одного экземпляра самого себя. Например, если у вас есть класс с именем car, в который включено статическое ключевое слово, вы всегда будете получать доступ к членам этого класса через статические ссылки этого класса. Таким образом, у вас никогда не было бы двух экземпляров автомобиля.

Какой, в зависимости от того, что ваша программа пытается сделать, возможно, подходит. Однако вы можете использовать ключевое слово static, если у вас есть оценка игрока по именам классов. Поскольку это будет когда-либо существовать только один раз, и если у вас не будет больше одного игрока, вам понадобится 1 экземпляр игрока. Это означает, что вы можете либо рассмотреть экземпляр singleton, либо просто создать статический класс.

Существует много причин, по которым вы либо использовали, либо не использовали бы статический модификатор. Однако некоторые из них, когда вы должны использовать это невозможно, зависят от конкретного сценария создаваемого вами приложения.

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