Приведение типов - C# (180976)

Узнай цену своей работы

Формулировка задачи:

Проблема с приведениями типов
public abstract class A<T> where T : B{}
 
public class A1:A<B1>{}
 
public abstract class B{}
 
public class B1:B{}
 
public class B2:B{}
 
void Main(){
 var a1 = new A1();
 var a=(A<B>)a1;//ошибка
 var ab1= (A<B1>)a1;//работает
}
Пробовал писать оператор преобразования для класса А1, но в переменной null и
(A<B>)(object)a1
, как правильно привести?

Решение задачи: «Приведение типов»

textual
Листинг программы
public interface IA<out T> where T : B {}
public abstract class A<T> : IA<T> where T : B{}
 
public class A1:A<B1>{}
 
public abstract class B{}
 
public class B1:B{}
 
public class B2:B{}
 
void Main(){
 var a1 = new A1();
 IA<A> a=a1;
}

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

5   голосов , оценка 3.8 из 5