Из C # 2.0:
private void Example(int? arg1, int? arg2)
{
if(arg1 == null)
{
//do something
}
if(arg2 == null)
{
//do something else
}
}
поскольку
никогда не вызовет исключение InvalidCastException
. Вместо этого он возвращает null, если преобразование завершается неудачно (что даст вам NullReferenceException
, если obj
в вашем примере не было строкой
).
Кроме уже упомянутого InvalidCastException
...
поскольку
не будет работать, если целевой тип является типом значения (если он не допускает значения NULL):
obj as int // compile time error.
Насколько я знаю!
Использование 'as' вернет null, если 'приведение' завершится неудачно, где приведение вызовет исключение, если приведение не удастся.
Использование as не вызовет исключения, если объект не является String. Вместо этого он вернет null. Что в вашем случае все равно вызовет исключение, поскольку вы сразу же ссылаетесь на это нулевое значение.