Что такое ковариантность и контрковариантность? - C#
Формулировка задачи:
Может кто-нибудь объяснить коротко своими словами что такое ковариантность и контрковариантность?
И как эти понятие связаны вот с этим: http://dic.academic.ru/dic.nsf/enc_p...A1%D0%A2%D0%AC
up...
Решение задачи: «Что такое ковариантность и контрковариантность?»
textual
Листинг программы
using System;
namespace ConsoleApplication1
{
delegate Name UI (FamilyAndName obj);
public class Name
{
public string myName;
}
public class FamilyAndName : Name
{
public string Family;
}
public class UserInfo
{
public static Name UIName(Name obj)
{
obj.myName = "Имя пользователя: \"" + obj.myName + "\"";
return obj;
}
public static FamilyAndName UIFamilyName(FamilyAndName obj)
{
obj.Family = "Имя и фамилия: \"" + obj.myName + " " + obj.Family + "\"";
return obj;
}
}
class Program
{
static void Main()
{
// Пример ковариантности
// Можно использовать метод, возвращаемым типом параметра которого
// является производный класс
UI user1 = UserInfo.UIFamilyName;
// Пример контравариантности
// Можно использовать метод, аргументом которого является
// базовый класс
user1 = UserInfo.UIName;
}
}
}