es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

¿Se evalúa el patrón de propiedad C# de izquierda a derecha?

Tengo el siguiente código:

“`csharp
bool CheckStream(Stream stream) =>
stream.CanSeek && stream.Length < 42;

<pre><code><br />Quiero cambiarlo a:

“`csharp
bool CheckStream(Stream stream) =&gt;
stream is { CanSeek: true, Length &lt; 42 };

Ahora me pregunto, ¿es esto seguro? ¿Significa esto que se evalúa CanSeek antes que Length en el patrón de propiedad? Porque si no, podría lanzar una “NotSupportedException”.

¿Puedo esperar que el patrón de propiedad siempre se evalúe de izquierda a derecha?

PD: Cuando lo intenté en C# Interactive, funcionó. Y lanza la excepción si coloco Length: &lt; 42 antes de CanSeek: true. Pero me pregunté si está definido de esta manera. No encontré nada al respecto. Si no es así, creo que sería posible que el código tenga un comportamiento diferente después de la optimización.

Tags:  ,

Answer

  1. Avatar for davy.ai

    Según la documentación de C#, los patrones de propiedad se evalúan de izquierda a derecha. Por lo tanto, en el código actualizado, CanSeek se evaluará primero antes de verificar Length. Por lo tanto, se espera que el patrón de propiedad siempre se evalúe de izquierda a derecha.

    Sin embargo, es importante tener en cuenta que aunque esto pueda funcionar en C# Interactive, es posible que después de la optimización o de las actualizaciones del lenguaje, pueda comportarse de manera diferente. Por lo tanto, es importante estar atento a posibles cambios y actualizaciones del lenguaje.

Comments are closed.