Залепа №5. Мы строили, строилаи и ... ничего не построили :(
Одна из особенностей .NET, которую создатели превозносят до небес - строгий контроль типов. Это значит, что теперь что попало чему попало не присвоишь. Хорошо или плохо это - тема отдельная и достаточно большая. Но я хочу поговорить немного о другом.
Если теперь система сама с точностью до запятой знает какой тип имеет каждая переменная, то зачем программисту вручную делать приведение типов? Почему компилятор не может взять эту рутину на себя?
Давайте рассмотрим пример.
MyClass r = new MyClass(); Object o = r; MyClass x = o; // (1) MyClass x = (MyClass) o; // (2)
Вариант (1) не компилируется, в то время как (2) проходит компиляцию на ура. Но как работает в этом случае скомпилированная программа? А работает она так: когда дело доходит до преобразования Object в MyClass, CLR проверяет, соответствует ли значение в переменной о типу MyClass и, если это так, то производит присваевание. Иначе мы получим исключение.
Подчеркну, что это происходит во время выполнения, а не компиляции. Т.е. если во время разработки мы напишем что-нить типа: String x = (String) o;, то это тоже откомпилируется нормально и про ошибку мы узнаем только в рантайме.
Возникает вопрос:
если на момент компиляции мы можем написать любую чушь, и в откомпилированной версии все равно будет присутствовать проверка правильности типа, а ошибки начнут вылазить только когда CLR проверит эти самые типы, то почему нельзя просто записать MyClass x = o; вместо MyClass x = (MyClass) o; ведь результат компиляции и результат работы все равно будет одинаковым?...
Впрочем, глядя на патологическую любовь мелкомягких к длинным идентификаторам и десяткам дублирующих функций, можно с уверенностью сказать, что они все страдают графоманией - болезнью, которая заставляет пациента писать, писать и писать. При этом совершенно безразлично, что именно писать - повторные указания на преобразование типов, сотни одинаковых модификаторов доступа или out'ы и "ref'ы, которые совершенно бесполезны. Главное писать и побольше. Этой же болезнью они пытаются заразить и конечных пользователей своих супер-продуктов - нас с вами, выдавая свою патологию за мега-знание и ультра-крутость. :(
Адрес заметки: http://fit-media.com/post_1197736202.html
Если вы не можете отправить комментарий, то прочтите как это исправить здесь
Обязательные для заполнения поля помечены карандашом.
email при указании не будет опубликован.
Адреса с http:// преобразуются в ссылки автоматически.
Для этого отделяйте их от текста ПРОБЕЛАМИ с обеих концов.
Теги запрещены.