Вы используете объект, содержащий ссылку нулевого значения. Таким образом, он дает пустое исключение. В примере строковое значение равно null, и при проверке его длины произошло исключение.
Пример:
string value = null;
if (value.Length == 0) // <-- Causes exception
{
Console.WriteLine(value); // <-- Never reached
}
Ошибка исключения:
Необработанное исключение:
System.NullReferenceException: ссылка на объект не установлена в экземпляр объекта. в Program.Main ()
blockquote>
Короткий ответ: да, он может иметь длину 0, но не будет пустым.
Я не могу найти никакой инструкции в разделе Загрузка, связывание и инициализация в Спецификация виртуальной машины Java , которая требует, чтобы аргументы были не пустыми.
Таким образом, следует предположить, что null
разрешено, и педантично ваша программа должна быть готова обрабатывать аргументы null
. Даже если в типичных средах времени выполнения, таких как запуск программы Java с помощью программы java
для запуска JVM в Linux, никогда не будет аргументов null
.
Пакеты приложений с двойным щелчком мыши на MacOS по-прежнему не имеют нулевого массива, которые передаются на главную, хотя нет никакой командной строки.
Спецификация JVM не указывает, основной метод может быть нулевым. См. https://docs.oracle.com/javase/specs/jvms/se9/html/jvms-5.html#jvms-5.2
Однако конвенция гласит, что он будет не нулевым, и маловероятно, что поставщик JVM нарушит это соглашение на этом этапе.