Блог Сергея Даровских
24
ноября
2009
более 3-х месяцев назад
Преобразование типов
21:33
В Silverlight часто приходится работать с объектами, не зная заранее их типа. Чтобы получить доступ ко всем методам соответствующего объекта, надо его преобразовать к правильному типу. Первая мысль — использовать для этого прямой каст:
Однако если такого объекта не существует или он имеет другой тип, такой каст выбросит исключение InvalidCastException. Таким образом, правильный код со временем превращается в суровое нагромождение блоков try-catch.
По-моему, для преобразования типов гораздо удобнее использовать оператор as. В отличие от прямого преобразования, в случае неудачи он не вызывает исключение, а возвращает null. То есть код выглядит таким образом:
Если преобразования типов применяются часто, то второй вариант делает код намного более читаемым.
Canvas cnvMap = (Canvas) LayoutRoot.FindName("myCanvas");
Однако если такого объекта не существует или он имеет другой тип, такой каст выбросит исключение InvalidCastException. Таким образом, правильный код со временем превращается в суровое нагромождение блоков try-catch.
По-моему, для преобразования типов гораздо удобнее использовать оператор as. В отличие от прямого преобразования, в случае неудачи он не вызывает исключение, а возвращает null. То есть код выглядит таким образом:
Canvas cnvMap = LayoutRoot.FindName("myCanvas") as Canvas;
if (cnvMap != null)
{
выполняем нужные действия
}
else
{
обрабатываем ошибку
}
Если преобразования типов применяются часто, то второй вариант делает код намного более читаемым.
Powered by e2
Copyright © 2004—2010 Сергей Даровских