Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
Форум программистов > Общие вопросы по .NET и C# > А какая разница между |
Автор: neutrino 6.4.2005, 18:40 | ||||
А какая разница между
и
Спасибо. |
Автор: arilou 6.4.2005, 18:53 |
В первом случае при невозможности приведения типов будет выборшен InvalidCastException, а во втором случае - результатом приведения будет null. |
Автор: mr.DUDA 6.4.2005, 18:56 | ||
И в первом и во втором примере показано, как преобразовать объект sender к Button. В случае, если sender содержит объект производный от Button, разницы между примерами - никакой. Различия проявятся только если sender не является объектом Button. В первом примере возникнет исключение InvalidCastException, а во втором примере выражение "sender as Button" даст null, в результате при обращении через точку к свойству Text возникнет исключение NullReferenceException. Кстати, в мсдн оператор as раскрывается как:
И ещё, оператор as игнорирует пользовательские операции преобразования, определённые в классе. |
Автор: neutrino 6.4.2005, 18:59 |
Вот-вот. Я то же самое вычитал в МСДН, но когда столкнулся с такой ситуацией, второй вариант мне выкинул тот же Exception! |
Автор: mr.DUDA 6.4.2005, 19:06 |
Какой именно? InvalidCastException? Оператор as никогда не выкидывает исключений, в этом весь его и смысл. |
Автор: neutrino 6.4.2005, 19:07 |
Вероятно я не обратил внимания на тип ексепшена. Сейчас гляну... |
Автор: maxim1000 6.4.2005, 19:08 | ||
в этой строке не только оператор as здесь еще идет работа со свойством Text может, при неправильном приведении исключение бросается именно при работа с Text? |
Автор: neutrino 6.4.2005, 19:15 |
Как оказалось я все еще молод и неопытен. Вы были как всегда правы. У меня выкидывало именно NullPointerException. |