Различие C# между кастингом и как? [дубликат]

Из C # 2.0:

private void Example(int? arg1, int? arg2)
{
    if(arg1 == null)
    {
        //do something
    }
    if(arg2 == null)
    {
        //do something else
    }
}
39
задан Community 23 May 2017 в 11:47
поделиться

4 ответа

поскольку никогда не вызовет исключение InvalidCastException . Вместо этого он возвращает null, если преобразование завершается неудачно (что даст вам NullReferenceException , если obj в вашем примере не было строкой ).

80
ответ дан 27 November 2019 в 02:10
поделиться

Кроме уже упомянутого InvalidCastException ...

поскольку не будет работать, если целевой тип является типом значения (если он не допускает значения NULL):

obj as int // compile time error.
19
ответ дан 27 November 2019 в 02:10
поделиться

Насколько я знаю!

Использование 'as' вернет null, если 'приведение' завершится неудачно, где приведение вызовет исключение, если приведение не удастся.

8
ответ дан 27 November 2019 в 02:10
поделиться

Использование as не вызовет исключения, если объект не является String. Вместо этого он вернет null. Что в вашем случае все равно вызовет исключение, поскольку вы сразу же ссылаетесь на это нулевое значение.

5
ответ дан 27 November 2019 в 02:10
поделиться
Другие вопросы по тегам:

Похожие вопросы: