Модераторы: Partizan, gambit
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> конструкция where, разъясните 
V
    Опции темы
wwwdiz
Дата 15.6.2007, 01:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 89
Регистрация: 13.4.2006

Репутация: нет
Всего: 1



Наткнулся на статью, понял практически всё за исключением ключевого слова where:
Код

 private TForm GetForm<TForm> ()
        where TForm: Form, new()

Очень хотелось бы услышать объяснения экспертов...
PM   Вверх
SpaceSpace
Дата 15.6.2007, 08:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 366
Регистрация: 10.4.2007
Где: Самара

Репутация: 2
Всего: 10



Этот конструкт накладывает ограничения на generic,

т.е. в процессе компиляции будет проверяться соответсвует ли тот тип, который ты засунеш
в
<>
Код

TForm 
(в твоем случае), т.е. является ли твой тип производным от TForm 
а также этот класс должен иметь конструктор без параметров 
Код

new()


и так, в конечном итоге для успешного выполнения тып должен иметь конструктор без параметров,
и быть производным от TForm

объяснил?


--------------------
Репутация - самое ценное, что есть у человека. Зарабатывают годы, теряют за мгновение.
70-565
MCPD Enterprise 3.5 
PM MAIL   Вверх
darkness
Дата 15.6.2007, 08:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 173
Регистрация: 5.8.2006
Где: Москва

Репутация: нет
Всего: 1



SpaceSpace, 
Цитата

и быть производным от TForm

Скорей всего от Form, т.к.: where TForm: Form, new()
--------------------
Вина каких стран Вы предпочитаете в это время суток?     (Булгаков. "Мастер и Маргарита") 
PM MAIL   Вверх
wwwdiz
Дата 15.6.2007, 09:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 89
Регистрация: 13.4.2006

Репутация: нет
Всего: 1



darkness, тогда а  что подобное гласит:
Код

private TForm GetForm<TForm, TKey> (TKey key)
        where TForm : Form, IViewer<TKey>, new()


Что TForm, который в скобках <>, должен быть производным от Form  и интерфейса IViewer, да и ещё с конструтором без параметров? (задаю подобные ламерские вопросы, потому как в литературе нигде объяснения подобного не встречал)

PM   Вверх
SpaceSpace
Дата 15.6.2007, 09:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 366
Регистрация: 10.4.2007
Где: Самара

Репутация: 2
Всего: 10



Цитата

Скорей всего от Form

описка, ссори

Добавлено через 3 минуты и 36 секунд
а если несколько типизированных параметров, то надо писать так

Код

        private TForm GetForm<TForm, TKey>(TKey key)
        where TForm : Form, new()
          where  TKey: new()



--------------------
Репутация - самое ценное, что есть у человека. Зарабатывают годы, теряют за мгновение.
70-565
MCPD Enterprise 3.5 
PM MAIL   Вверх
tol05
Дата 15.6.2007, 09:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник Клуба
Сообщений: 1632
Регистрация: 21.12.2006
Где: Харьков

Репутация: 63
Всего: 170



первое ограничение: тип TForm (т.е любой подставляемый тип) должен быть совместимым с Form, т.е. быть им, или его потомком
второе ограничение: TForm должен быть типом, имеющим конструктор без параметров

И вообще, всем, кто интересуется вопросами синтаксиса, советую почитать Standard ECMA-334

Это сообщение отредактировал(а) tol05 - 15.6.2007, 09:34


--------------------
На хорошей работе и сны хорошие снятся.
PM MAIL   Вверх
SpaceSpace
Дата 15.6.2007, 09:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 366
Регистрация: 10.4.2007
Где: Самара

Репутация: 2
Всего: 10



Цитата

Что TForm, который в скобках <>, должен быть производным от Form  и интерфейса IViewer, да и ещё с конструтором без параметров? 

правильно мыслишь, молодец


--------------------
Репутация - самое ценное, что есть у человека. Зарабатывают годы, теряют за мгновение.
70-565
MCPD Enterprise 3.5 
PM MAIL   Вверх
wwwdiz
Дата 15.6.2007, 09:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 89
Регистрация: 13.4.2006

Репутация: нет
Всего: 1



Всё, Ребята, разъяснили!!!! Спасибо!!!
PM   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Прежде чем создать тему, посмотрите сюда:
mr.DUDA
THandle

Используйте теги [code=csharp][/code] для подсветки кода. Используйтe чекбокс "транслит" если у Вас нет русских шрифтов.
Что делать если Вам помогли, но отблагодарить помощника плюсом в репутацию Вы не можете(не хватает сообщений)? Пишите сюда, или отправляйте репорт. Поставим :)
Так же не забывайте отмечать свой вопрос решенным, если он таковым является :)


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, mr.DUDA, THandle.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Общие вопросы по .NET и C# | Следующая тема »


 




[ Время генерации скрипта: 0.0472 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.