2012-05-23 18 views
7

En C#, ¿es posible declarar una clase o estructura dentro de un método, como en C++?Declarar una clase o estructura dentro de un método en C#

p. Ej. C++:

void Method() 
{ 
    class NewClass 
    { 
    } newClassObject; 
} 

Lo he intentado, pero no me permite hacerlo.

+4

Deberías poder hacerlo en una ** clase **, pero no dentro de un ** método **. ¿Qué has intentado exactamente? – mattytommo

+0

Su tema dice "método interno", pero en su publicación dice "dentro de clase". Edite uno u otro para que su objetivo sea claro. – logicnp

+3

el título hace una pregunta diferente al cuerpo de la pregunta. La diferencia es importante. Por favor aclare si quiere decir "dentro de un Método" (título) vs "dentro de una clase" (cuerpo) –

Respuesta

7

Usted puede crear un tipo anónimo de este modo:

var x = new { x = 10, y = 20 } 

pero aparte de eso: no.

+2

Este es un objeto, no una clase. – WojtekT

+5

Sí y no. x es una variable, pero el tipo (anónimo) devuelto por x.GetClass() es una clase. – erikkallen

+0

Eso es verdad. Supuse que la pregunta era sobre definir una clase. – WojtekT

3

Puede declarar dentro de una clasecomo sus estados de interrogación, pero no dentro de un método como su título indica cuestión. Algo así como:

public class MyClass 
{ 
    public class MyClassAgain 
    { 
    } 

    public struct MyStruct 
    { 
    } 
} 
7

Sí, es posible declarar una class dentro de un class y éstos se llaman inner classes

public class Foo 
{ 
    public class Bar 
    { 

    } 
} 

y esto cómo se puede crear una instancia

Foo foo = new Foo(); 
Foo.Bar bar = new Foo.Bar(); 

Y dentro de un método puede crear un objeto de anonymous tipo

void Fn() 
{ 
var anonymous= new { Name="name" , ID=2 }; 
Console.WriteLine(anonymous.Name+" "+anonymous.ID); 
} 
Cuestiones relacionadas