Alvin Seville
342 / 272 / 134
Регистрация: 25.07.2014
Сообщений: 4,537
Записей в блоге: 9
1

Применение ковариантности в обобщенном интерфейсе

08.09.2018, 14:37. Показов 949. Ответов 1
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
 
namespace Ковариантность_и_контрвариантность
{
    interface IFirst<out T>
    {
        T Method();
    }
 
    class First<T> : IFirst<T>
    {
        public T Method() => Activator.CreateInstance<T>();
    }
 
    class A {};
 
    class B : A {};
 
    class Program
    {
        static void Main(string[] args)
        {
            var x = new First<A>();
            
        }
    }
}
Добавлено через 10 минут
Вопрос такой - как вернуть методом Method класс-потомок T?
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
08.09.2018, 14:37
Ответы с готовыми решениями:

Null в обобщенном типе
Здравствуйте, подскажите как вернуть null во втором перегруженном методе Get (50 строка) using...

Преобразование типов в обобщенном методе
Всем доброго времени суток. public static void Metod&lt;T&gt;(T a1) where T: struct // Какое...

Перегрузка операторов в обобщенном классе
Всем привет. Вопрос такой: &quot;Можно ли в обобщённом классе как-нибудь перегрузить операторы *, -,...

Разные типы в обобщенном методе
Здравствуйте. Хочу написать следующий метод: подается массив типа int или string или object и тд,...

1
1123 / 794 / 219
Регистрация: 15.08.2010
Сообщений: 2,185
08.09.2018, 15:12 2
Лучший ответ Сообщение было отмечено Соколиный глаз как решение

Решение

Цитата Сообщение от Соколиный глаз Посмотреть сообщение
Вопрос такой - как вернуть методом Method класс-потомок T?
например так (интерфейс можно подправить соответственно)
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
    interface IFirst<out T>
    {
        T Method();
    }
 
    class First<T> : IFirst<T>
    {
        public Func<T> create;
        public T Method() => create();
    }
 
    class A { };
 
    class B : A { };
 
    class Program
    {
        static void Main(string[] args)
        {
            var x = new First<A>();
            x.create = () => new B();
            var b = x.Method();
        }
    }
1
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
08.09.2018, 15:12
Помогаю со студенческими работами здесь

Как суммировать переменные Т в обобщенном классе?
Компилятор пишет что невозможно применить оператор + к переменным типа Т. Вот код,в котором...

Как в обобщенном методе указать ограничения для конструктора?
Вот например я хочу создать Класс в котором я буду в основном работать с двумя типами, один из...

Перегрузка операторов в обобщенном классе. Сложение, вычитание типов T
Потихоньку изучаю C#. Тут решил написать обобщенный класс, который тип T представляет из себя любой...

Как реализовать пузырьковую сортировку в обобщенном двусвязном списке?
Как реализовать пузырьковую сортировку в обобщенном двусвязном списке? Сначала думал все просто,...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
2
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2023, CyberForum.ru