2015-02-13 4 views
0

Я просто делал оценку на множественном числе и получил следующий вопрос.Что возвращает подпрограмма void?

«Что возвращает подпрограмма void?»

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

Does .Net возвращает тип значения в фоновом режиме или этот вопрос неверен?

Выбор мною подавалось было: Integer Boolean Строка Datetime

+4

[ 'System.Void'] (https://msdn.microsoft.com/en-us /library/system.void.aspx) не _nothing_, это 'struct', следовательно, тип значения. –

+0

void подпрограмма возвращает данные без контроля выполнения только для вызова. Какой выбор они выбрали? – Adil

+0

@TimSchmelter, конечно, это структура. Но его метод не вернет что-то вызывающему? Верный? – Christos

ответ

2

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

6

System.Void не ничего, это struct, следовательно, тип значения.

Однако метод, который является Sub (VB.NET) или «возвращает» void (C#), действительно не возвращает значение. Таким образом, вы не можете писать что-то вроде этого:

System.Void nothing = Foo(); // Foo is a void-method 

Это не компилируется («System.Void не может быть использована из C# - использовать TYPEOF (пустоту), чтобы получить объект типа пустот»). Связанный: Why not System.Void?


Как уже упоминалось Йерун и другие, на самом деле метод void на самом деле не что-нибудь вернуться, так что правильный ответ был: «Он ничего не возвращает».

MSDN отметил, что это полезно только в отраженном свете:.

«Пустота структура используется в пространстве имен System.Reflection, но редко используется в типичном приложении Структура Пустота не имеет других членов чем те, которые все типы наследуют от класса Object ».

Если посмотреть на подсказке на void -ключевое слово вы видите, что он отображает до System.Void. Но опять же это не означает, что он возвращается из метода. Это просто заполнитель для несуществующей возвращаемой стоимости. Я предполагаю, что void существует также в силу исторических причин, так как C# базируется на C.

Также стоит читать: Why does void in C mean not void?

+0

'System.Void' не является ничем, но это также не то, что объявленные методы возвращают« void »на самом деле. Если это то, что они приняли в качестве правильного ответа, у них есть вопрос, который нужно исправить. –

+0

@JeroenMostert: Я отредактировал свой ответ, чтобы подчеркнуть это больше. –