2011-04-07 8 views
5

Greetings Overflowers,¿Existe una sintaxis de C# equivalente para la definición de estructura anónima en línea de C?

Sé que en C podemos definir una estructura en línea con la declaración de variable para que el tipo de estructura sea específico de esta variable. Esto es en lugar de definir el tipo solo luego de declarar que la variable es de ese tipo de estructura. ¿Es esto posible en C#?

¡Gracias!

+9

Esperaba ver algún código C. Por desgracia, la expectativa no se ha cumplido debidamente, y estoy así superado con gran desilusión. – BoltClock

+0

Un ejemplo sería bueno. Además, ¿por qué necesita hacer esto, tal vez hay otra forma de resolver el problema en C#? –

+4

Sí, es posible en C#, pero está escrito así. – Kobi

Respuesta

14

Esto no es posible en C#, sin embargo se puede definir una instancia de un tipo anónimo de esta manera:

var x = new { SomeField = 1, SomeOtherField = "Two" }; 

Esto sería efectivamente la misma, dándole una instancia de un tipo que es específico de ese variable y no se puede usar fuera del alcance de la variable.

+0

** Nota: * * los tipos anónimos no se pueden devolver ni pasar a otros métodos, es decir, solo existen en el ámbito del método en el que se han definido. No es posible tener una variable de tipo anónimo en el nivel de clase. –

+1

@Daniel: Es cierto, aunque estoy bastante seguro de que se aplican las mismas restricciones o las equivalentes a las estructuras anónimas en C, y de hecho a cualquier lenguaje de tipo estático. "Si no tiene un nombre, no puedes mencionarlo". Tiene sentido. – Avish

+0

@Daniel - En realidad, puedes pasarlo a un método genérico, pero es muy feo. También se compartirá con * otros * tipos anónimos con los mismos campos, pero nuevamente, gran fealdad. Pero obviamente, no en un nivel de clase; si C++ lo permite, no creo que C# tenga algo similar. – Kobi

1

Respuesta simple: No, no es posible.

Cuestiones relacionadas