What does this C# code with an "arrow" mean and how is it called?

That is a lambda expression. It is a very special anonymous delegate. Basically you are defining a method and not giving a name. Its parameters are to the left of the => and the method body is to the right of the =>. In your particular case,

(se, cert, chain, sslerror) => { return true; };

is an anonymous method defined by a lambda expression. This particular method has four parameters

object se
X509Certificate cert
X509Chain chain
SslPolicyErrors sslerror

and the method body is

return true;

It's as if you had said

class ServerCertificateValidation {
    public bool OnRemoteCertificateValidation(
        object se,
        X509Certificate cert,
        X509Chain chain,
        SslPolicyErrors sslerror
    ) {
        return true;
    }
}

and then

var validation = new ServerCertificateValidation();
System.Net.ServicePointManager.ServerCertificateValidationCallback +=
    validation.OnRemoteCertificateValidation;

How is that (blah,blah,blah)=>{return true;} construct called and where can I find more info on such constructs?

It's called the same way that any other method is called. For example, you can do this:

Func<int, int, int> adder = (m, n) => m + n;

Here I am defining a method that eats a pair of int and returns an int. That int is obtained by adding the values of the input parameters. It can be invoked like any other method.

int four = adder(2, 2); 

Here's an article on MSDN on lambda expressions and an article on the lambda operator. If you're really interested, the name comes from lambda calculus.


For completeness (for search results, etc): in more recent versions of C# (since 6.0), the => syntax has been extended from just lambdas for delegates and expression trees, to cover expression-bodied members. This means that a range of simple members such as properties, methods, etc - can be implemented as expression bodies; for example:

public int Foo { get { return innerObj.SomeProp; } }
public void Bar() { Write("Thing"); }

can be written:

public int Foo => innerObj.SomeProp;
public void Bar() => Write("Thing");

It's called a lambda expression.

http://msdn.microsoft.com/en-us/library/bb311046.aspx - The lambda operator.

Tags:

C#

.Net

Linq