can anyone explain what syntax is used =>
The bold arrow syntax is used to create something called Lambda Expression in C #. It is just syntactic sugar for creating delegates.
The output expression does not make any sense, but you can see that it is used in LINQ:
var strings = new[] { "hello", "world" }; strings.Where(x => x.Contains("h"));
The syntax x => x.Contains("h") will be output by the compiler as Func<string, bool> , which will be generated at compile time.
Edit:
If you really want to see what happens behind the scenes, you can take a look at the decompiled code inside any .NET decompiler:
[CompilerGenerated] private static Func<string, bool> CS$<>9__CachedAnonymousMethodDelegate1; private static void Main(string[] args) { string[] strings = new string[] { "hello", "world" }; IEnumerable<string> arg_3A_0 = strings; if (Program.CS$<>9__CachedAnonymousMethodDelegate1 == null) { Program.CS$<>9__CachedAnonymousMethodDelegate1 = new Func<string, bool> (Program.<Main>b__0); } arg_3A_0.Where(Program.CS$<>9__CachedAnonymousMethodDelegate1); } [CompilerGenerated] private static bool <Main>b__0(string x) { return x.Contains("h"); }
Here you can see that the compiler created a cached delegate of type Func<string, bool> called Program.CS$<>9__CachedAnonymousMethodDelegate1 and a named method called <Main>b__0 , which is passed to the Where clause.
Yuval Itzchakov
source share