Size: a a a

2021 November 05

L

Lion in CODE BLOG / C#
Всем привет. Вопрос от новичка.
Чем ICollection<T> отличается от обычных коллекций? Почему например можно использовать его в качестве типа для автосвойств?
источник

P

Phantom in CODE BLOG / C#
ICollection это просто интерфейс
источник

P

Phantom in CODE BLOG / C#
Он не содержит реализацию
источник

P

Phantom in CODE BLOG / C#
Он дает гарантию, что объект реализующий его имеет все методы и свойства указанные в нем
источник

P

Phantom in CODE BLOG / C#
То есть, когда ты допустим делаешь вот так
источник

P

Phantom in CODE BLOG / C#
public void Method(ICollection<MyClass> collection)

То тебе похуй что за объект тебе передали, главное, что этот объект реализует этот интерфейс
источник

L

Lion in CODE BLOG / C#
Да я более-менее понимаю как работают интерфейсы. Просто не вкурил что происходит в видео практикума у Code Blog.
Он там делает свойство:
public virtual ICollection<MyClass> MyClasses { get; set; }
Для того, чтобы объединить классы. Но при этом MyClass не реализует этот интерфейс.  И что-то я запутался.
источник

R2

RARiK 24 in CODE BLOG / C#
а, ладно
источник

R2

RARiK 24 in CODE BLOG / C#
MyClass - это тип экземпляры которого хранит коллекция с названием MyClasses
источник

L

Lion in CODE BLOG / C#
Это я тоже понимаю) Я спрашивал почему используется именно ICollection<T>
источник

Д

Давид in CODE BLOG / C#
Ай колекшн это интерфейс коллекции, массив, в вместо буквы Т можно подставить любой тип и тогда будет коллекция елементов этого типа, в данном случае это будет коллекция из елементов типа MyClasses
источник

Д

Давид in CODE BLOG / C#
Почитай или посмотри про обобщения
источник

Б[

Барсик [SpamBlock]... in CODE BLOG / C#
потому что удобнее работать с конкретным типом, а не с базовым object
источник

RO

Roman Onofreichuk in CODE BLOG / C#
источник

L

Lion in CODE BLOG / C#
Спасибо большое!
источник

R2

RARiK 24 in CODE BLOG / C#
@moneylion5 Помимо использования дженериков могу ещё добавить, что когда мы в методе указываем параметр типа ICollection<T>, то это более SOLIDно, т.к. мы не зависим от конкретного контейнера (List<T> к примеру), а зависим от абстракции, т.е. сущности получаются слабосвязанными.

P.S.
Принцип инверсии зависимостей (Dependency Inversion Principle)
источник

R2

RARiK 24 in CODE BLOG / C#
если коротко, то благодаря ICollection<T> tы можешь в любой момент соскочить на другую коллекцию (реализующую  ICollection<T>), получаем гибкость
источник

L

Lion in CODE BLOG / C#
Спасибо за информацию
источник

M

Meiirzhan in CODE BLOG / C#
Всем салам
источник

M

Meiirzhan in CODE BLOG / C#
источник