Esto es más una pregunta académica sobre el rendimiento que un "qué debería usar" realista, pero tengo curiosidad ya que no hago mucho en IL para ver qué está construido y no tengo un gran conjunto de datos en mano al perfil contra.¿Qué es más rápido en un bucle: llamar una propiedad dos veces o almacenar la propiedad una vez?
Así que es más rápido:
List<myObject> objs = SomeHowGetList();
List<string> strings = new List<string>();
foreach (MyObject o in objs)
{
if (o.Field == "something")
strings.Add(o.Field);
}
o:
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);
}
tener en cuenta que en realidad no quiero saber el impacto en el rendimiento de la string.Add (s) (como cualquier operación que necesite hacerse realmente no se puede cambiar), solo la diferencia de rendimiento entre la configuración s cada iteración (digamos que s puede ser cualquier tipo primitivo o cadena) versos que llaman al getter sobre el objeto en cada iteración.
¿Por qué preguntas _us_? Usted ha escrito el código. Saca un cronómetro, ejecútalo mil millones de veces en ambas direcciones, y luego sabrás cuál es más rápido. –