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>
.