2014-12-15 4 views
-3
static int Main(string[] args) 
     { 
      Guid obj = Guid.NewGuid(); 

      Console.WriteLine("New Guid is " + obj.ToString()); 
      Console.ReadLine(); 
      return -1; 
     } 

Может кто-нибудь сказать мне, почему здесь используется return -1, и что это значит?Почему в этом примере используется return -1?

+0

Потому что вы можете проверить возвращаемое значение, если вы запустите эту программу с помощью другого приложения (пакет, powershell, ...) – Dinistro

+0

Хороший вопрос (не в вопросе SO-good-question, но в том, *** - знает смысл). Обычно ненулевое возвращаемое значение означает, что любая команда не удалась, поэтому, возможно, автор просто играл. Или они знают, что-то значит. Или это их любимый номер. Или, компилятор выдавал ошибку, и это их способ заставить ее «заткнуться и скомпилировать». –

+0

В этом примере это ничего не значит. Но обычно он говорит, успешно ли завершился процесс или какая-то ошибка. Это код выхода процесса. '0' означает успех, а не ноль указывает на ошибку. –

ответ

4

Метод Main может вернуться void:

static void Main() 
{ 
    //... 
} 

Он может также возвращать int:

static int Main() 
{ 
    //... 
    return 0; 
} 

Если возвращаемое значение Main не используется, возвращая пустоту позволяет немного более простой код.
Однако возвращение integer позволяет программе связывать информацию о состоянии с другими программами или сценариями, которые вызывают исполняемый файл.
Подробнее here.

+1

Я этого не знаю, теперь я чувствую себя глупо! +1 – mybirthname

2

Я, конечно, не в состоянии сказать вам, почему выбрано -1, но в целом это возвращаемое значение будет отправлено вызывающему приложению. Он называется кодом выхода. В настоящее время они обычно не используются в приложениях, поскольку их действительно просто нет, но в тот же день - и, действительно, в этом контексте - они использовались для передачи успеха или неудачи (или чего-то еще) консольное приложение.

Например, я могу написать программу, которая выполняет сетевой вызов, а затем возвращает 0, если вызов успешный и случайный пример 12, если не было установлено сетевой адаптер. Таким образом, если какая-то другая программа использовала мой EXE, она могла понять, был ли вызов успешным или нет, без необходимости неуловимо разбирать какой-то выходной поток.

Большинство современных приложений имеют функции static void Main, так как этот рабочий процесс не подходит в большинстве ситуаций для конечного пользователя. Теперь мы используем GUI, чтобы показать «во время выполнения ошибки». Это не значит, что они не полезны в некоторых случаях, очевидно, по той же причине, что и раньше, но результат обычно не фиксируется, если вы, скажем, запустите программу, дважды щелкнув значок, и, таким образом, в большинстве случаев его отбрасывают.

0

Возвращаемое значение main - это код выхода программы. Вызывающий может проверить это и отреагировать на него. В Windows общий шаблон состоит в том, чтобы использовать 0, если программа преуспела, и разные положительные целые числа для условий ошибки.

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