Создаем портфолио за 1 месяц
К концу месяца: 4 классных проекта в вашем портфолио! Стоимость: 100$. Подробности...
⊗csSpGcCnI 62 of 509 menu
◀ ▶

Контравариантность in в C#

Модификатор in ставят у параметра типа, который метод только принимает и не возвращает. Реализацию для более широкого типа тогда можно использовать там, где ждут более узкий тип.

Сравниватель получает два значения и возвращает число: меньше нуля, нуль или больше нуля. Сравниватель объектов умеет принять строку, потому что строка - это объект. Поэтому его сохраняют в переменную для строк. Обратное запрещено: сравниватель строк не умеет принять произвольный объект. Строка "cat" больше "ant":

IComparer<string> strings = new TextComparer(); Console.WriteLine(strings.Compare("cat", "ant")); class TextComparer : IComparer<object> { public int Compare(object? a, object? b) { return string.Compare(a?.ToString(), b?.ToString()); } }

Дан код:

string left = "dog"; string right = "cat";

Передайте сравнение объектов туда, где ждут сравнение строк. Сравните left и right и выведите результат.

← →
↑
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить