Результаты поиска по запросу "covariance"

6 ответов

Из того, что я могу собрать, ковариантность устраняет необходимость явного понижения рейтинга после предыдущего повышения. Обычно, если вы выгружаете объект, вы можете получить доступ только к методам и атрибутам базового типа, с ковариацией кажется, что вы можете подразумевать понижение, заменяя меньшие производные типы более производными типами в более производном объявлении класса.

разница между ковариацией и апкастингом или, более конкретно, почему им дают разные имена? Я видел следующий пример, называемый «апкастинг»: string s = "hello"; object o = s; //upcast to 'string' to 'object'Принимая во внимание, что следующее, ...

3 ответа

Вы не объяснили, почему «ложь достаточно хороша для большинства вызовов этого метода», и вы не объяснили, почему они решили не использовать эту ложь для Array и сделать ее также ковариантной.

мер. Почему val list:List[Any] = List[Int](1,2,3)работать, но val arr:Array[Any] = Array[Int](1,2,3)не удается (потому что массивы являются инвариантами). Каков желаемый эффект этого дизайнерского решения?

1 ответ

Brilliant! Спасибо! Мне действительно пора углубиться в поддержку .Net 4.0 для согласованности и противоречивости. Как только вы набрали ответ, я увидел, что IEnumerable поддерживает коваризацию, но другие вещи, такие как IList, не ... так что еще раз спасибо за связку! --- Кстати, небольшое исправление в вашем решении - если тип возвращаемого значения IEnumerable, но если вы хотите, чтобы он был IQueryable, добавьте к нему «.AsQueryable».

аюсь объединить (объединение или конкат) два списка / коллекции в один. Два списка имеют общий базовый класс. например Я пробовал это: IQueryable<ContractItem> contractItems = myRepository.RetrieveContractItems(); IQueryable<ChangeOrderItem> ...

ТОП публикаций

3 ответа

Используйте другой тип возврата для

ьте на вопрос кпредыдущий вопрос [https://stackoverflow.com/questions/6390446/interface-inheritance-and-generic-interfaces-force-explicit-casts] это было идентифицировано как проблема совместного отклонения. Если сделать еще один шаг вперед, если ...

6 ответов

Это совсем не то, как дженерики работают в .NET. Вы описываете, как работают шаблоны в C ++. В .NET универсальный тип генерируется как один тип, и затем во время выполнения джиттер создает новый код для каждого экземпляра с типом значения, и один экземпляр используется для всех ссылочных типов.

я есть список объектов, которые относятся к моему типуQuoteHeader и я хочу передать этот список в виде списка объектов в метод, который может принятьList<object>. Моя строка кода читает ... Tools.MyMethod((List<object>)MyListOfQuoteHeaders);Но ...

4 ответа

IReadOnlyList реализован так:

ел бы коллекцию Covariant, элементы которой можно получить по индексу. IEnumerable - это единственная коллекция .net, о которой я знаю, это Covariant, но она не имеет поддержки индекса. В частности, я хотел бы сделать это: List<Dog> dogs = new ...

9 ответов

Я сделаю это так:

отаю с платформой .NET и действительно хочу иметь возможность создавать страницы нестандартного типа, которые использует весь мой веб-сайт. Проблема возникает, когда я пытаюсь получить доступ к странице из элемента управления. Я хочу ...

1 ответ

Таким образом, если у вас есть ситуация, когда применяется класс SAM, это, вероятно, место для смешанной противоречивости и ковариации.

овленРеальные примеры со-и контравариантности в Scala [https://stackoverflow.com/questions/5277526/real-world-examples-of-co-and-contravariance-in-scala] Я думал, что лучший вопрос будет: При разработке библиотеки, есть ли конкретный набор ...

2 ответа

Если вы посмотрите практически на любую библиотеку или фреймворк, вы найдете частое использование аннотаций отклонений. Если вы правильно абстрагируете свое приложение «реального мира», вы, вероятно, будете писать множество библиотек для его поддержки, с небольшим ядром критической бизнес-логики, красиво отделенным от всей инфраструктуры поддержки. Во всей этой инфраструктуре поддержки, вероятно, также будут часто использоваться аннотации отклонений.

ю об использованииco- а такжеcontravariance в стандартной библиотеке (например, коллекции и чертаFunction) Я удивляюсь, какco- а такжеcontravariance используются в дизайне бизнес-приложений "реального мира".

3 ответа

, Откат. Спасибо

следующие виды: public interface IMyClass { } public class MyClass : IMyClass { }Интересно, как я могу преобразоватьList<MyClass> кList<IMyClass>? Мне не совсем понятны темы ковариации / контравариантности, но я понимаю, что из-за этого просто ...