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?
[ 'System.Void'] (https://msdn.microsoft.com/en-us /library/system.void.aspx) не _nothing_, это 'struct', следовательно, тип значения. –
void подпрограмма возвращает данные без контроля выполнения только для вызова. Какой выбор они выбрали? – Adil
@TimSchmelter, конечно, это структура. Но его метод не вернет что-то вызывающему? Верный? – Christos