Строка.Формат Аргумента Значение 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()функция) позволит избежать этой проблемы.