How to call anonymous function in C#?

Viewed 14146

I am interested if it's possible using C# to write a code analogous to this Javascript one:

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

The most I could achieve is:

Func<string> vf = () =>
{
    return "some value";
};

var v = vf();

But I wanted something like this:

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

Are there some way to call the function leaving it anonymous?

3 Answers

Let

With this helper function:

T Let<T>(Func<T> f) => f();

your example is then:

var v = Let(() => { return "abc"; });

Why the name Let?

It can be used similarly to let in other languages like Haskell, Scheme, and other Lisps.

This in Scheme:

(define c 
  (let ((a 10)
        (b 20))
    (+ a b)))

and this in Haskell:

c = 
  let 
    a = 10
    b = 20
  in a + b

can be written using Let in C#:

var c = Let(() => 
{
    var a = 10;
    var b = 20;

    return a + b;
});
Related