SauroN
Блог Сергея Даровских
Ноябрь 2009
пнвтсрчтптсбвс
1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30

24 ноября 2009
более 3-х месяцев назад

Преобразование типов 21:33

В Silverlight часто приходится работать с объектами, не зная заранее их типа. Чтобы получить доступ ко всем методам соответствующего объекта, надо его преобразовать к правильному типу. Первая мысль — использовать для этого прямой каст:

        Canvas cnvMap = (Canvas) LayoutRoot.FindName("myCanvas");

Однако если такого объекта не существует или он имеет другой тип, такой каст выбросит исключение InvalidCastException. Таким образом, правильный код со временем превращается в суровое нагромождение блоков try-catch.

По-моему, для преобразования типов гораздо удобнее использовать оператор as. В отличие от прямого преобразования, в случае неудачи он не вызывает исключение, а возвращает null. То есть код выглядит таким образом:


        Canvas cnvMap = LayoutRoot.FindName("myCanvas") as Canvas;
        if (cnvMap != null) 
        { 
            выполняем нужные действия 
        } 
        else
         { 
            обрабатываем ошибку 
        }

Если преобразования типов применяются часто, то второй вариант делает код намного более читаемым.

Комментарии (1)

Кейворды: silverlight, c#, код

Ctrl
Преобразование типов

Пароль:

Powered by e2

Copyright © 2004—2010 Сергей Даровских