Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Прочее";
Текущий архив: 2010.08.27;
Скачать: [xml.tar.bz2];

Вниз

Задачка про generics C#   Найти похожие ветки 

 
oxffff ©   (2010-04-22 12:05) [0]

Допустим, есть следующий код VS2005(C# 2.0)
class A
  { }

class B : A
  { }

       static void Bound<W,T>() where W:B,T
                                  where T:A
                                          {
          T varB;
      varB = new B();
           varB = (T) new B();  

       }

       static void Main(string[] args)
       {
           Bound<C,B>();
       }

Может ли кто-нибудь привести пример, что выделенные присваивания некорректны на что жалуется компилятор?


 
oxffff ©   (2010-04-22 12:16) [1]

Ладно задачка Видимо простая. Но это правильно.


 
jack128_   (2010-04-22 13:26) [2]


> ли кто-нибудь привести пример, что выделенные присваивания
> некорректны на что жалуется компилятор


class C : B {}

Bound<C, C>  ?  (C)(new B()) - не коректно.


 
oxffff ©   (2010-04-22 14:18) [3]


> jack128_   (22.04.10 13:26) [2]
>
> > ли кто-нибудь привести пример, что выделенные присваивания
>
> > некорректны на что жалуется компилятор
>
>
> class C : B {}
>
> Bound<C, C>  ?  (C)(new B()) - не коректно.


Именно так. Собственно нельзя ограничь bound параметр сверху.


 
oxffff ©   (2010-04-22 14:20) [4]


> Именно так. Собственно нельзя ограничь bound параметр сверху.


В смысле конкретным типом.


 
RC   (2010-04-22 14:26) [5]

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

static void Bound<W, T>()
           where W : B, T
           where T : A, new()


 
oxffff ©   (2010-04-23 11:53) [6]


> RC   (22.04.10 14:26) [5]
> Не заявлено требование на обязательное наличие конструктора
> без параметров. У подственного класса конструктор может
> быть приватный, например, или интернал.
>
> static void Bound<W, T>()
>            where W : B, T
>            where T : A, new()


Здесь new B(), а не  new T().



Страницы: 1 вся ветка

Форум: "Прочее";
Текущий архив: 2010.08.27;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.45 MB
Время: 0.072 c
15-1265664604
Юрий
2010-02-09 00:30
2010.08.27
С днем рождения ! 9 февраля 2010 вторник


15-1266561272
Kerk
2010-02-19 09:34
2010.08.27
Глобальное потепление


2-1268992876
самдал
2010-03-19 13:01
2010.08.27
подпись Виндовс


15-1270110574
12
2010-04-01 12:29
2010.08.27
Загадка. Что в имени тебе моем?


15-1274364250
Sergey Masloff
2010-05-20 18:04
2010.08.27
Работа с RFID метками. Пробовал кто?





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский