2012-05-23 8 views
7

In C#, è possibile dichiarare una classe o una struttura all'interno di un metodo, come in C++?Dichiarare una classe o una struttura all'interno di un metodo in C#

ad es. C++:

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

Ho provato, ma non mi permette di farlo.

+4

Dovresti essere autorizzato a farlo in una ** classe **, ma non all'interno di un ** metodo **. Che cosa hai provato esattamente? – mattytommo

+0

L'oggetto dice "metodo interno", ma nel tuo post si dice "in classe". Modifica uno o l'altro in modo che il tuo obiettivo sia chiaro. – logicnp

+3

il titolo pone una domanda diversa al corpo della domanda. La differenza è importante Si prega di chiarire se si intende "all'interno di un metodo" (titolo) vs "all'interno di una classe" (corpo) –

risposta

7

È possibile creare un tipo anonimo in questo modo:

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

ma a parte questo: no.

+2

Questo oggetto, non una classe. – WojtekT

+5

Sì e no. x è una variabile, ma il tipo (anonimo) restituito da x.GetClass() è una classe. – erikkallen

+0

È vero. Ho pensato che la domanda riguardasse la definizione di una classe. – WojtekT

3

Si possono dichiarare all'interno di una classe di come i vostri stati domanda, ma non all'interno di un metodo come i vostri membri del titolo questione. Qualcosa di simile:

public class MyClass 
{ 
    public class MyClassAgain 
    { 
    } 

    public struct MyStruct 
    { 
    } 
} 
7

Sì, è possibile dichiarare una class all'interno di un class e questi sono chiamati inner classes

public class Foo 
{ 
    public class Bar 
    { 

    } 
} 

e questo modo è possibile creare un'istanza

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

E all'interno di un metodo è possibile creare un oggetto di anonymous tipo

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