2010-07-07 36 views

Respuesta

11

El rendimiento de rendimiento crea automáticamente un enumerador para usted.

http://msdn.microsoft.com/en-us/library/9k7k7cf0.aspx

Así que usted puede hacer algo como

//pseudo code: 

while(get_next_record_from_database) 
{ 
    yield return your_next_record; 
} 

Te permite crear rápidamente una colección de objetos (un enumerador) que puede recorrer y recuperar registros. La sentencia return yield maneja todo el código necesario para crear un enumerador por usted.

La mayor parte de la declaración de rendimiento es que no tiene que cargar todos los elementos en una colección antes de devolver la colección al método de llamada. Permite lazy loading de la colección, por lo que no paga la penalización de acceso de una sola vez.

Cuándo utilizar Yield Return.

1

yield se utiliza como azúcar sintáctico para devolver un objeto IEnumerable<T> o IEnumerator<T> desde un método sin tener que implementar su propia clase implementando estas interfaces.

+0

?? ¿Por qué los downvotes? ¿Soy incorrecto? – spoulson

+0

Sí, porque es diferente de crear el IEnumerable usted mismo y devolverlo. –

+2

No hay nada de incorrecto en esta respuesta. –

4

Rendimiento es mucho más que azúcar sintáctico o formas fáciles de crear IEnumerables.

Para obtener más información, echa un vistazo al blog de Justin Etherage que has a great article explaining more advanced usages of yield.

+0

Absolutamente. No puede apreciar completamente el 'rendimiento' hasta que comprenda exactamente cómo está creando la máquina de estado para usted. Es increíblemente poderoso. –

+0

Maldita sea, eso es útil. Sé que esto es viejo, pero esa publicación realmente lo hizo por mí. – Terrance

1

Escribí una muestra simple que muestra cómo se invoca el bloque de rendimiento durante un ciclo de visita de la colección. Verifique here.

Cuestiones relacionadas