In C#, the ICollection<T> interface is a part of the .NET framework that represents a generic collection of objects. It is a broader interface that provides basic functionalities for collections. Here’s an overview of ICollection<T>, its uses, and how it compares to other similar interfaces like IEnumerable<T>, IList<T>, and IDictionary<TKey, TValue>.
خوب generic collection of objects هستش
ICollection<T> Overview
- Namespace:
System.Collections.Generic - Definition:
ICollection<T>is a generic interface that defines methods for working with collections of objects. It is a more generalized interface compared toIList<T>orIDictionary<TKey, TValue>.
از Ilist , IDictionary کلی تره یعنی استفاده ی general تری داره
این ها دستور هایی که میتونیم توش استفاده کنیم
Key Members of ICollection<T>
Count: Gets the number of elements in the collection.Add(T item): Adds an item to the collection.Clear(): Removes all items from the collection.Contains(T item): Determines whether the collection contains a specific value.CopyTo(T[] array, int arrayIndex): Copies the elements of the collection to an array, starting at a particular array index.Remove(T item): Removes the first occurrence of a specific object from the collection.IsReadOnly: Gets a value indicating whether the collection is read-only.
خوب کجا استفاده میشه ؟ وقتایی که میخوایمیه کالکشن رو manipulate کنیم و دیگه کار خاصی نداریم باهاش
Uses of ICollection<T>
- General Collection Interface:
ICollection<T>is often used when you need a flexible collection that can be manipulated (e.g., add, remove items) without needing the more specialized operations that other interfaces provide. - Base for Other Interfaces: It serves as the base interface for more specialized collection types like
IList<T>andIDictionary<TKey, TValue>.
Difference Between ICollection<T> and Other Collection Interfaces
-
IEnumerable<T>:- Purpose: Represents a forward-only cursor for iterating over a collection.
- Differences:
IEnumerable<T>only provides a method to get an enumerator (GetEnumerator) to iterate through the collection. It does not support adding, removing, or determining the number of elements. - Usage: Use
IEnumerable<T>when you only need to iterate over a collection without modifying it.
فرق IEnumerable با ICollection اینه که IEnumrable رو نمیشه توش add , remove کرد و نمیشه تعداد المان هاش رو بدست آورد از IEnumrable زمانی استفاده میکنیم که بخوایم یه توی کالکشن itrate کنیم بدون این که بخوایم تغییری ایجاد کنیم
-
ICollection<T>:- Purpose: Represents a collection that can be modified (add, remove items) and provides information like count and whether it’s read-only.
- Differences:
ICollection<T>extendsIEnumerable<T>and adds functionalities for manipulating the collection, such as adding and removing items. - Usage: Use
ICollection<T>when you need basic collection manipulation features.
خوب IList یه جورایی قابلیت های Ienumarable و Icollection رو افزایش میده برای زمانی استفاده میشه که بخوایم به اعضای یه کاکشن با استفاده از index شون دسترسی پیدا کنیم
-
IList<T>:- Purpose: Represents a collection of objects that can be individually accessed by index.
- Differences:
IList<T>extendsICollection<T>andIEnumerable<T>. It adds index-based access (via the indexer), which allows you to get or set elements by their position in the collection. - Usage: Use
IList<T>when you need to access elements by index or need list-specific functionalities.
-
IDictionary<TKey, TValue>:- Purpose: Represents a collection of key/value pairs.
- Differences:
IDictionary<TKey, TValue>extendsICollection<KeyValuePair<TKey, TValue>>andIEnumerable<KeyValuePair<TKey, TValue>>. It provides methods to add, remove, and check for keys or values specifically. - Usage: Use
IDictionary<TKey, TValue>when you need to store and access data by key.
Summary
IEnumerable<T>: Minimal interface for iterating over a collection.ICollection<T>: Adds collection manipulation methods likeAdd,Remove, andCount.IList<T>: Adds index-based access and manipulation.IDictionary<TKey, TValue>: Specialized for key/value pair collections with key-based access.
ICollection<T> is a versatile interface that provides a middle ground between the simplicity of IEnumerable<T> and the more specialized interfaces like IList<T> and IDictionary<TKey, TValue>.