Строка.Формат Аргумента Значение Null Исключение
приведенный ниже код будет выдавать аргумент Null Exception
var test = string.Format("{0}", null);
однако, это вернет пустую строку
string something = null;
var test = string.Format("{0}", something);
просто любопытно узнать, почему второй кусок кода не бросает исключение. Это ошибка ?
3 ответа:
разница в том, что первый кусок кода зовет
string.Format(string, object[])
... в то время как второй кусок кода вызываетstring.Format(string, object)
.
null
является допустимым аргументом для второго метода (это просто ожидаемое значение для первого заполнителя), но не первый (гдеnull
обычно массив заполнителей). В частности, сравните документацию для whenNullArgumentException
бросается:
string.Format(string, object)
:
второй фрагмент кода вызывает следующие перегрузки:
Format(String, Object)
здесь значение может быть null, согласно документации.
первый фрагмент кода использует следующие перегрузки:
на второе значение не может быть null, согласно документации.Format(String, Object[])
незначительный момент, не упомянутый существующими ответами, и почти делает вопрос спорным:
полное сообщение для
ArgumentNullException
- Это:значение не может быть null.
Имя параметра: параметр argsтакже часть проблемы здесь
null
- это любой тип. Явное приведение его кstring
илиobject
(или используйте C#default()
функция) позволит избежать этой проблемы.