من تا همين امروز نميدونستم كه كد زير توي #C معتبره و كامپايل ميشه:
class Foo { public Bar GetEnumerator() { return new Bar(); } public struct Bar { public bool MoveNext() { return false; } public object Current { get { return null; } } } } // the following compiles just fine: Foo f = new Foo(); foreach (object o in f) { Console.WriteLine("Hi!"); }
نكته اينجاست كه توي NET. و #C براي iteration بايد از IEnumerable استفاده ميكرديم. اما گويا foreach در #C از duck typing استفاده ميكنه. ممكنه برروي درست بودن استفاده از چنين الگويي توي زبان strongly typedاي مثل سي.شارپ كلي حرف و حديث باشه؛ اما نكته عجيبتر از نظر من اينه كه چرا اين قضيه توي MSDN و يا C# Specification مستند نشده؟!
————
پ.ن: كد را از اينجا برداشته ام: وبلاگ Krzysztof Cwalina. اگر از علاقمندان #C هستيد، اين وبلاگ رو از دست نديد، فوق العاده است.
Filed under: عشق من؛ سیشارپ


