53. foreach for ducked types

ראינו ביום ראשון שכדי שיהיה אפשר לעשות על Type כלשהו foreach, צריך למממש IEnumerable.

מסתבר שזה לא מדויק 😃

אם לא נממש IEnumerable, אבל תהיה לנו מחלקה מהסוג הזה:

1
2
3
4
5
6
7
public class ForeachHack
{
public IEnumerator GetEnumerator()
{
// ...
}
}

שלא מממשת IEnumerable(!) אז הקוד הבא יתקמפל:

1
2
3
4
5
6
ForeachHack hack = new ForeachHack();
foreach (object current in hack)
{
// Hack things
}

תכלס, זה סתם מגניב ולא כדאי לעשות את זה.

אם אתם באים לממש IEnumerable משלכם, עדיף שתממשו IEnumerable, ואפילו IEnumerable<T>.

יום בר מנייה טוב

שתף