Вопросы по теме 'contravariance'

Почему наследование не работает так, как я думаю, должно работать?
У меня есть некоторые проблемы с наследованием, поскольку у меня есть группа взаимосвязанных абстрактных классов, которые необходимо переопределить вместе для создания клиентской реализации. В идеале я хотел бы сделать что-то вроде следующего:...
1165 просмотров

Как универсальная ковариация и контравариантность реализованы в C # 4.0?
Я не был на PDC 2008, но услышал новости о том, что C # 4.0 объявлен для поддержки универсальной ковариантности и контр-дисперсии. То есть List<string> можно назначить List<object> . Как такое могло быть? В книге Джона Скита C #...
36488 просмотров

Переопределение универсальных методов Java
Я хотел создать интерфейс для копирования объекта в целевой объект того же класса. Простой способ - использовать кастинг: import org.junit.Test; import org.junit.internal.runners.JUnit4ClassRunner; import org.junit.runner.RunWith;...
4868 просмотров
schedule 07.10.2022

Общие подстановочные знаки в объявлениях переменных в Scala
В Java я мог бы сделать это: class MyClass { private List<? extends MyInterface> list; public void setList(List<MyImpl> l) { list = l; } } ... при условии, что ( MyImpl implements MyInterface ), конечно. Какой аналог...
14220 просмотров

Объяснение контравариантности
Во-первых, я прочитал много объяснений SO и блогов о ковариации и контравариантности, и большое спасибо Эрику Липперту за создание такой великолепной серии статей о ковариации и контравариантности . Однако у меня есть более конкретный вопрос,...
20926 просмотров
schedule 23.05.2022

Приведите примеры функций, демонстрирующих ковариантность и контравариантность в случаях как перегрузки, так и переопределения в Java?
Пожалуйста, покажите хороший пример ковариантности и контравариантности в Java.
43957 просмотров
schedule 04.07.2022

Почему концепции ковариации и контравариантности применимы при реализации методов интерфейса?
Вариант использования примерно такой: public class SomeClass : ICloneable { // Some Code // Implementing interface method public object Clone() { // Some Clonning Code } } Теперь мой вопрос: Почему невозможно...
939 просмотров
schedule 02.03.2023

Как IEnumerable‹T› Contra-вариант?
Это сообщение ( http://blogs.msdn.com/b/brada/archive/2005/01/18/355755.aspx ) говорит, что IEnumerable<T> является Contra-вариантом. Однако тип T является ковариантным, потому что это параметр out . Итак, в каком контексте...
2892 просмотров

Проблемы контравариантности со свойствами событий
Предположим, у меня есть простой подкласс EventArgs: class MyArgs : EventArgs { } Представьте, что у меня есть два класса с событиями: class MyData { public event EventHandler<MyArgs> Method; } class MyObject { public event...
145 просмотров
schedule 20.02.2022

Универсальные модели C# 4.0 и ASP.net MVC
Похоже, что в C# 4.0 спецификаторы вариации применимы только к типам интерфейсов. Итак, допустим, у меня есть классы ViewModel/EditModel и простая иерархия моделей. class MyEditModel<T> where T : Base { ... } class Derived1 : Base { ......
615 просмотров

Общая функция «карта» для кортежей Scala?
Я хотел бы отобразить элементы кортежа Scala (или тройки,...), используя одну функцию, возвращающую тип R. Результатом должен быть кортеж (или тройка,...) с элементами типа R. Хорошо, если элементы кортежа относятся к одному типу, сопоставление не...
6062 просмотров
schedule 27.08.2022

Контравариантность и val
Как и почему «val» и «case» влияют на систему типов? (особенно дисперсия) Welcome to Scala version 2.8.1.final (Java HotSpot(TM) 64-Bit Server VM, Java 1.6.0_22). Type in expressions to have them evaluated. Type :help for more information....
494 просмотров
schedule 01.04.2023

Ковариантность, контравариантность и устранение лишних параметров типа
Учитывая следующую иерархию классов: abstract class A { } abstract class B { } abstract class C { } abstract class D<TA, TB, TC> where TA : A where TB : B where TC : C { } class E : A { } class F : B { } class G : C { } class H...
178 просмотров
schedule 15.03.2024

Разница в выражении‹Func‹T,bool››
Только быстро и коротко, на этот раз. Func<T,TResult> является контравариантным ( ИЗМЕНИТЬ : параметр типа T). Сейчас я работаю не с Func<T,TResult> , а с Expression<Func<T,TResult>> и, похоже, зашел в тупик....
3509 просмотров
schedule 13.04.2023

Ковариация и контравариантность, ошибки времени компиляции
Я читал о ковариантности и контравариантности - Википедия говорит о следующем : Предположим, у вас есть класс, представляющий человека. Человек может обратиться к врачу, поэтому этот класс может иметь метод virtual void Person::see(Doctor d)....
187 просмотров
schedule 23.11.2022

Преобразование из Func‹object,string› в Func‹string,string› работает, но в Func‹int,string› не работает
У меня есть следующий код: static Func<object, string> s_objToString = (x) => x.ToString(); static Func<string, string> s_stringToString = s_objToString; //compiles static Func<int, string> s_intToString = s_objToString;...
1752 просмотров
schedule 12.02.2023

ковариация / противодействие
Предположим, у меня есть: class Event {} class DoorBell extends Event {} class PhoneCall extends Event {} class EventGenerator { static Event getEvent() { if (today.isSunday()) return new DoorBell() else...
112 просмотров

MonoTouch и поддерживающие варианты универсальных интерфейсов
Приведенный ниже пример отлично компилируется в обычном Mono 2.10.9: namespace covarianttest { public interface ITest<out T> : IEnumerable<T> { } } Однако, когда я пытаюсь скомпилировать его с MonoTouch 6.0.8, я...
211 просмотров

ковариантный тип T встречается в контравариантном положении
Я знаю, что этот вопрос уже задавали раньше, но либо ответы не относятся к этому случаю, либо я их не понимаю. В принципе, почему не работает следующий (простой пример, который воссоздает мою проблему)? class Test[+T] { var list: List[T] = _...
5759 просмотров
schedule 01.06.2022

Общее ограничение для действия не работает должным образом
У меня возникли проблемы с пониманием того, почему следующий фрагмент не дает мне ошибки public void SomeMethod<T>(T arg) where T : MyInterface { MyInterface e = arg; } Но этот, который, как я ожидаю, будет работать из-за ограничения...
1546 просмотров
schedule 29.11.2023