استفاده IEnumerator و IEnumrable در سیشارپ
👈 یکبار برای همیشه این مقاله بهت میگه IEnumerator و IEnumrable چیه و چه کارایی داره.
👁 بازدید : 105
1403/2/6 | 22:15 : تاریخ 📆
IEnumrable یک شمارشگری هست برای کالکشنهای جنریک و نان-جنریک.درواقع زیرساخت تمام کالکشنها، عزیز دلمون IEnumrable هست، چراکه ما نیاز داریم در بین تمام آیتمهای یک کالکشن پیمایش کنیم.
بزارید یک مثال واقعی بزنم، بیایید هر کتاب رو یک کالکشن جنریک یا نان-جنریک در نظر بگیریم.اینکه ما بتونیم در بین صفحات یک کتاب پیمایش کنیم رو IEnumrable در نظر میگیریم.خب میدونیم که IEnumrable یک متدی داره به نام GetEnumerator که از یک اینترفیسی به نام IEnumerator میاد.این کد زیر کد خود ماکروسافته که همه چیز مشخصه :
namespace System.Collections
{
//
// Summary:
// Exposes an enumerator, which supports a simple iteration over a non-generic collection.
public interface IEnumerable
{
//
// Summary:
// Returns an enumerator that iterates through a collection.
//
// Returns:
// An System.Collections.IEnumerator object that can be used to iterate through
// the collection.
IEnumerator GetEnumerator();
}
}
پس گفتیم اینکه ما بتونیم در بین صفحات یک کتاب پیمایش کنیم رو IEnumrable در نظر میگیریم اما لازمه یه خودکاری داشته باشیم و لای کتاب بزاریمش که بعدا خواستیم دوباره کتاب رو بخونیمش بدونم از کجا شروع کنیم.درسته!! ما به این خودکار میگیم IEnumerator. چرا که به ما میگه الان در کدوم صفحه هستیم، حالا اگه لازم شد میریم صفحه بعدی(متد MoveNext) یا اینکه کتاب رو دوباره شروع میکنیم(متد Reset).
این هم کد IEnumerator:
namespace System.Collections
{
//
// Summary:
// Supports a simple iteration over a non-generic collection.
public interface IEnumerator
{
//
// Summary:
// Gets the element in the collection at the current position of the enumerator.
//
//
// Returns:
// The element in the collection at the current position of the enumerator.
object Current { get; }
//
// Summary:
// Advances the enumerator to the next element of the collection.
//
// Returns:
// true if the enumerator was successfully advanced to the next element; false if
// the enumerator has passed the end of the collection.
//
// Exceptions:
// T:System.InvalidOperationException:
// The collection was modified after the enumerator was created.
bool MoveNext();
//
// Summary:
// Sets the enumerator to its initial position, which is before the first element
// in the collection.
//
// Exceptions:
// T:System.InvalidOperationException:
// The collection was modified after the enumerator was created.
//
// T:System.NotSupportedException:
// The enumerator does not support being reset.
void Reset();
}
}
نتیجه گیری :
سعی کردم در این مقاله خیلی ساده به موضوع IEnumrable و IEnumerator بپردازم و شما یک تصوری از این دو داشته باشید تا بتونید خوب از هم تفکیکشون کنید.
IEnumrable یک شمارشگری هست برای کالکشنهای جنریک و نان-جنریک.درواقع زیرساخت تمام کالکشنها، عزیز دلمون IEnumrable هست، چراکه ما نیاز داریم در بین تمام آیتمهای یک کالکشن پیمایش کنیم.
بزارید یک مثال واقعی بزنم، بیایید هر کتاب رو یک کالکشن جنریک یا نان-جنریک در نظر بگیریم.اینکه ما بتونیم در بین صفحات یک کتاب پیمایش کنیم رو IEnumrable در نظر میگیریم.خب میدونیم که IEnumrable یک متدی داره به نام GetEnumerator که از یک اینترفیسی به نام IEnumerator میاد.این کد زیر کد خود ماکروسافته که همه چیز مشخصه :
namespace System.Collections
{
//
// Summary:
// Exposes an enumerator, which supports a simple iteration over a non-generic collection.
public interface IEnumerable
{
//
// Summary:
// Returns an enumerator that iterates through a collection.
//
// Returns:
// An System.Collections.IEnumerator object that can be used to iterate through
// the collection.
IEnumerator GetEnumerator();
}
}
پس گفتیم اینکه ما بتونیم در بین صفحات یک کتاب پیمایش کنیم رو IEnumrable در نظر میگیریم اما لازمه یه خودکاری داشته باشیم و لای کتاب بزاریمش که بعدا خواستیم دوباره کتاب رو بخونیمش بدونم از کجا شروع کنیم.درسته!! ما به این خودکار میگیم IEnumerator. چرا که به ما میگه الان در کدوم صفحه هستیم، حالا اگه لازم شد میریم صفحه بعدی(متد MoveNext) یا اینکه کتاب رو دوباره شروع میکنیم(متد Reset).
این هم کد IEnumerator:
namespace System.Collections
{
//
// Summary:
// Supports a simple iteration over a non-generic collection.
public interface IEnumerator
{
//
// Summary:
// Gets the element in the collection at the current position of the enumerator.
//
//
// Returns:
// The element in the collection at the current position of the enumerator.
object Current { get; }
//
// Summary:
// Advances the enumerator to the next element of the collection.
//
// Returns:
// true if the enumerator was successfully advanced to the next element; false if
// the enumerator has passed the end of the collection.
//
// Exceptions:
// T:System.InvalidOperationException:
// The collection was modified after the enumerator was created.
bool MoveNext();
//
// Summary:
// Sets the enumerator to its initial position, which is before the first element
// in the collection.
//
// Exceptions:
// T:System.InvalidOperationException:
// The collection was modified after the enumerator was created.
//
// T:System.NotSupportedException:
// The enumerator does not support being reset.
void Reset();
}
}
نتیجه گیری :
سعی کردم در این مقاله خیلی ساده به موضوع IEnumrable و IEnumerator بپردازم و شما یک تصوری از این دو داشته باشید تا بتونید خوب از هم تفکیکشون کنید.
هنوز دیدگاهی ثبت نشده