Nullable типы в шаблонных функциях
От: Аноним  
Дата: 17.11.10 15:24
Оценка:
Может кто подскажет как обойти?
Нужно именно чтобы функция возвращала Nullable<value тип> или reference тип.
Или я чего-то не знаю?


class C1
{
    public T Do1<T>()
        where T : struct
    {
        T t = new T();
        return t;
    }


    public T Do2<T>()
        where T : class, new()
    {
        T t = new T();
        return t;
    }
}


class Test1
{
    private void Do1()
    {
        C1 c1 = new C1();
        char valueC = c1.Do1<char>();

        char? c = null;

        c = c1.Do2<Nullable<char>>(); //Error!
        c = c1.Do2<char?>(); //Error!
    }
}
Re: Nullable типы в шаблонных функциях
От: _FRED_ Черногория
Дата: 17.11.10 15:50
Оценка: -1
Здравствуйте, Аноним, Вы писали:

А>Может кто подскажет как обойти?

А>Нужно именно чтобы функция возвращала Nullable<value тип> или reference тип.
А>Или я чего-то не знаю?

Вот так:
А>class C1
А>{
А>    public T Do1<T>()
А>        where T : struct
А>    {
А>        T t = new T();
А>        return t;
А>    }

А>class Test1
А>{
А>    private void Do1()
А>    {
А>        C1 c1 = new C1();
А>        char valueC = c1.Do1<char>();

А>        char? c = null;
А>        c = c1.Do1<Nullable<char>>();
А>        c = c1.Do1<char?>();
А>    }
А>}
Help will always be given at Hogwarts to those who ask for it.
Re[2]: Nullable типы в шаблонных функциях
От: Kalina9001  
Дата: 17.11.10 15:53
Оценка:
Здравствуйте, _FRED_, Вы писали:

_FR>Вот так:

_FR>
А>>class C1
А>>{
А>>    public T Do1<T>()
А>>        where T : struct
А>>    {
А>>        T t = new T();
А>>        return t;
А>>    }

А>>class Test1
А>>{
А>>    private void Do1()
А>>    {
А>>        C1 c1 = new C1();
А>>        char valueC = c1.Do1<char>();

А>>        char? c = null;
А>>        c = c1.Do1<Nullable<char>>();
А>>        c = c1.Do1<char?>();
А>>    }
А>>}
_FR>


Не комилируется
... << RSDN@Home 1.2.0 alpha 4 rev. 1478>>
Re: Nullable типы в шаблонных функциях
От: QrystaL Украина  
Дата: 17.11.10 16:03
Оценка:
Здравствуйте, Аноним, Вы писали:

А>Может кто подскажет как обойти?

А>Нужно именно чтобы функция возвращала Nullable<value тип> или reference тип.
А>Или я чего-то не знаю?

    class C1
    {
        public T? Do1<T>()
            where T : struct
        {
            return new T();
        }

        public T Do2<T>()
            where T : class, new()
        {
            return new T();
        }
    }
Re: Nullable типы в шаблонных функциях
От: Димчанский Литва http://dimchansky.github.io/
Дата: 17.11.10 16:09
Оценка:
Здравствуйте, <Аноним>, Вы писали:

А>Может кто подскажет как обойти?

А>Нужно именно чтобы функция возвращала Nullable<value тип> или reference тип.
А>Или я чего-то не знаю?

class C1
{
    public Nullable<T> DoNullable<T>()
        where T : struct
    {
        T t = new T();
        return t;
    }
}

class Test1
{
    private void Do1()
    {
            C1 c1 = new C1();
            char? valueC = c1.DoNullable<char>();
    }
}
... << RSDN@Home 1.2.0 alpha 4 rev. 1476>>
Re: Nullable типы в шаблонных функциях
От: Clickmaker Россия http://relaxander.webest.net/
Дата: 17.11.10 16:09
Оценка:
class C1
  {
    public T Do1<T>()
        where T : struct
    {
      return new T();
    }

    public T? Do2<T>()
        where T : struct
    {
      return new T?();
    }
  }

C1 c1 = new C1();
char valueC = c1.Do1<char>();
char? c = null;
c = c1.Do2<char>();
Re: Nullable типы в шаблонных функциях
От: Аноним  
Дата: 17.11.10 16:40
Оценка:
Здравствуйте, Аноним, Вы писали:

А>Может кто подскажет как обойти?

А>Нужно именно чтобы функция возвращала Nullable<value тип> или reference тип.
А>Или я чего-то не знаю?


Всем большле спасибо!

http://www.rsdn.ru/forum/dotnet/4042617.1.aspx
Автор: QrystaL
Дата: 17.11.10

http://www.rsdn.ru/forum/dotnet/4042621.1.aspx
Автор: Димчанский
Дата: 17.11.10

http://www.rsdn.ru/forum/dotnet/4042623.1.aspx
Автор: Clickmaker
Дата: 17.11.10


Практически все идентичные, а главное правильные ответы!
Re[3]: Nullable типы в шаблонных функциях
От: _FRED_ Черногория
Дата: 17.11.10 18:21
Оценка:
Здравствуйте, Kalina9001, Вы писали:

_FR>>Вот так:

K>Не комилируется

Ну так опечатку надо исправить:

А>>>    public T Do1<T>()
А>>>        where T : new()
А>>>    {
А>>>    }
Help will always be given at Hogwarts to those who ask for it.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.