Come chiamare la funzione anonima in C #?

Sono interessato se è ansible utilizzare C # per scrivere un codice analogo a questo Javascript:

var v = (function() { return "some value"; })() 

Il massimo che potrei ottenere è:

 Func vf = () => { return "some value"; }; var v = vf(); 

Ma volevo qualcosa del genere:

 // Gives error CS0149: Method name expected var v = (() => { return "some value"; })(); 

C’è un modo per chiamare la funzione lasciandola anonima?

    Sì, ma C # è tipizzato staticamente, quindi è necessario specificare un tipo di delegato.

    Ad esempio, utilizzando la syntax del costruttore:

     var v = new Func(() => { return "some value"; })(); // shorter version var v = new Func(() => "some value")(); 

    … o la syntax del cast, che può diventare complicata con troppe parentesi 🙂

     var v = ((Func) (() => { return "some value"; }))(); // shorter version var v = ((Func)(() => "some value"))(); 

    Ecco come si potrebbe quindi utilizzare un tale costrutto per racchiudere il contesto – chiusura-

     Control.Click += new Func((x) => new System.EventHandler(delegate(object sender, EventArgs e) { }))(valueForX);