Страница: 1 | 2 |
|
Вопрос: Я новичек и хотелбы узнать...
|
Добавлено: 15.07.06 16:04
|
|
Номер ответа: 16 Автор ответа: Artyom
Разработчик
Вопросов: 130 Ответов: 6602
|
Профиль | | #16
|
Добавлено: 20.07.06 23:31
|
Если бы экземпляр формы существовал, то при старте приложения выполнялся бы весь код из всех Form_Initialize всех форм. Поэтому форма не существует. Она неявно создаётся при первом обращении.
Гм. И чем это отличается от того что я только что сказал?
Да, экземпляр класса создается при первом обращении к свойству, но каким образом ты из этого вывел, что формы не существует?
Она очень даже существует, по ней можно покликать, потягать по экрану, попробуй.
Если б ее не существовало, после Form1.Show мы бы ничего так и не увидили, согласен?
Судя по твоей логике, форм, создаваемых "классическим" методом, тоже не существует, потому что при запуске приложения не выполняется Form_Initialize. Бред, правда?
Да и вообще, что ты хочешь сейчас рассказать мне?
Ты видел во что после компиляции превращается проект? Там код, практически аналогичный тому, который пишут кулибины, т.е. имеем некое глобальное свойство, в котором храним экземпляр формы, сообветственно обращение к этому экземпляру идет через это свойство вот и все.
Разница только в том, что "неправильным" методом все делается моментально, а для "правильного" нужно еще напистаь десяток лишних строчек кода.
Ответить
|
Номер ответа: 19 Автор ответа: Artyom
Разработчик
Вопросов: 130 Ответов: 6602
|
Профиль | | #19
|
Добавлено: 21.07.06 01:23
|
IDisposable никто не отменял, так что утечки памяти тут аргумет совсем не канает.
По сути, этот способ вообще противоречит принципам ООП.
Ничем он не противоречит.
Класс есть? Есть. Экземпляр класса есть? Есть.
Наследование? Гм. Класс наследуется от Form, наследование имеем. Остальные вкусности наследования тоже имеем.
Если есть класс, то должен вызываться его конструктор.. и никак иначе.. (имхо)
Если ты сделаешь форме конструктор, этот конструктор будет вызываться, нельзя перескочить через свою голову.
И создав свой конструктор тот же новичок будет долго думать .. почему .Show вызывает исключение..
Исключения не будет, можем поспорить на 100 баллов рейтинга.
И вообще.. для чего ввели этот извращенный способ?..
Для удобства.
Ты не поверишь, я считаю себя професионлом .NET, и сейчас использую этот способ.
Позор мне, извращенцу, да?
Ответить
|
Номер ответа: 20 Автор ответа: EROS
Вопросов: 58 Ответов: 4255
|
Профиль | | #20
|
Добавлено: 21.07.06 01:57
|
Исключения не будет, можем поспорить на 100 баллов рейтинга. ага.. до исключения дело даже не дойдет... компилятор вообще не пропустит .Show без вызова конструктора..
Ты не поверишь, я считаю себя професионлом .NET, и сейчас использую этот способ. Сам себя ты можешь считать хоть пупом земли.. это еще ни о чем не говорит.. Лично я предпочитаю четко знать когда у меня форма инициализируется, загружается и отображается только по моему желанию.. Одно дело если ты четко представляешь и осознаешь, что происходит при неявном обращении к форме, и отдаешь себе отчет чем это чревато и где могут быть грабли.. И совершенно другое дело когда это делает новичок, который не понимает разницы между классом и экзкмпляром класса, и абсолютно не в состоянии осознать процессы происходящие при со создании формы как таковой..
И о каком IDisposable ты вообще ведешь речь, когда он не знает как запустить форму!!!!!!!! Для него это равносильно танцу с бубнами... тайне, покрытой мраком..
Ответить
|
Номер ответа: 21 Автор ответа: Artyom
Разработчик
Вопросов: 130 Ответов: 6602
|
Профиль | | #21
|
Добавлено: 21.07.06 14:48
|
ага.. до исключения дело даже не дойдет... компилятор вообще не пропустит .Show без вызова конструктора..
Слух, хорош ерись нести, а?
О каком вызове конструктора может вообще идти речь, если код даже банально не скомпилируется?
Лично я предпочитаю четко знать когда у меня форма инициализируется, загружается и отображается только по моему желанию..
Мне честно говоря абсолютно поифг когда форма будет загружена, а когда проинициализирована, но даже я знаю, когда какая часть этого процеса произойдет.
Другое дело, что человек даже не знает, и ему абсолютно пофиг, когда и при каких обстоятельствах будет создан экземпляр.
Одно дело если ты четко представляешь и осознаешь, что происходит при неявном обращении к форме, и отдаешь себе отчет чем это чревато и где могут быть грабли..
Что такое "неявное обращение"?
Какие тут вообще могут быть грабли?
Вообще, если ты такой крутой и пишешь такие сложные приложения, то тебе этот метод по определению не пригодится, и я тебе даже не пытаюсь его навязывать, другое дело, что в 99% случаев то что предлагаю я - оптимальный выбор.
И совершенно другое дело когда это делает новичок, который не понимает разницы между классом и экзкмпляром класса, и абсолютно не в состоянии осознать процессы происходящие при со создании формы как таковой..
И ты хочешь сказать что новичка больше обрадует твой "правильный" метод чем мой "неправильный"? Я бы на это не надеялся.
Ответить
|
Страница: 1 | 2 |
Поиск по форуму