Dies ist eher eine akademische Frage über die Leistung als ein realistisches "was sollte ich verwenden", aber ich bin neugierig, wie ich nicht viel in IL überhaupt zu sehen, was konstruiert ist und ich habe nicht eine große Datenmenge auf der Hand zu Profil gegen.
Was ist also schneller:
List<myObject> objs = SomeHowGetList();
List<string> strings = new List<string>();
foreach (MyObject o in objs)
{
if (o.Field == "something")
strings.Add(o.Field);
}
oder:
List<myObject> objs = SomeHowGetList();
List<string> strings = new List<string>();
string s;
foreach (MyObject o in objs)
{
s = o.Field;
if (s == "something")
strings.Add(s);
}
Beachten Sie, dass ich nicht wirklich wollen, um die Leistung Auswirkungen der string.Add(s) (als was auch immer Betrieb getan werden muss, kann nicht wirklich geändert werden), nur die Leistung Unterschied zwischen Einstellung s jede Iteration (sagen wir, dass s kann jeder primitive Typ oder String) Verse Aufruf der Getter auf das Objekt jede Iteration.