Quantcast
Channel: Planeta Código
Viewing all articles
Browse latest Browse all 2728

Variable not found: ¿Por qué no compila este código C#?

$
0
0
.NET Core Hoy va un post rapidito sobre un curioso detalle sintáctico de C# que me llamó la atención hace algún tiempo, mientras leía el artículo How to Stress the C# Compiler, donde Henning Dieterichs comenta varias formas de estresar (¡literalmente!) al compilador de C# utilizando construcciones admitidas por el lenguaje.

La cuestión es: ¿por qué no compila el siguiente código?
class Program {
public static void Main() {
int f = 0; int x = 0; int y = 0;
System.Console.WriteLine(
"{0} {1}",
f < x, // is f smaller than x?
y > (-1) // is y greater than -1?
);
}
}

¡No sigáis leyendo! Echad un vistazo al código e intentad averiguarlo antes de ver la solución :)
He de decir que los comentarios "//" en el código contribuyen significativamente al despiste, pero la respuesta es bastante sencilla. Basta con eliminar ruido y reformatear un poco el código para verlo más claro:
class Program {
public static void Main() {
int f = 0; int x = 0; int y = 0;
System.Console.WriteLine(
"{0} {1}",
f<x,y>(-1)
);
}
}
De esta forma, llegamos rápido a la conclusión de que el código conflictivo f<x,y>(-1) es sintácticamente correcto desde dos puntos de vista muy diferentes:
  • Dos parámetros suministrados a Console.WriteLine(), escritos como expresiones condicionales independientes:
    • f < x
    • y > (-1)
  • Una llamada a un método genérico f<x,y>, suministrándole el valor -1.
Ante este caso, durante el parseo Roslyn da prioridad a la segunda interpretación, por lo que el fallo en compilación es inevitable al no existir un método genérico f<x,y>() (bueno, y de hecho ni siquiera x e y son tipos, sino variables).

Curioso, ¿verdad?

Publicado en Variable not found.

Viewing all articles
Browse latest Browse all 2728

Trending Articles


UPDATE SC IDOL: TWO BECOME ONE


Maganda Quotes – tagalog Quotes – Inggit Quotes


Pokemon para colorear


Sapos para colorear


Tiwala Quotes and Selos Quotes Collections


Love with Heart Breaking Quotes


RE: Mutton Pies (frankie241)


Hato lada ym dei namar ka jingpyrshah jong U JJM Nichols Roy (Bah Joy) ngin...


EASY COME, EASY GO


FORECLOSURE OF REAL ESTATE MORTGAGE


Smile Quotes


KASAMBAHAY BILL IN THE HOUSE


Girasoles para colorear


Presence Quotes – Positive Quotes


Long Distance Relationship Tagalog Love Quotes


Re:Mutton Pies (lleechef)


Ka longiing longsem kaba skhem bad kaba khlain ka pynlong kein ia ka...


Vimeo 10.7.0 by Vimeo.com, Inc.


Vimeo 10.7.1 by Vimeo.com, Inc.


FORTUITOUS EVENT