This code throws an exception on the marked line:
using System;
using System.Linq.Expressions;
namespace ConsoleApplication2
{
class Program
{
Why is it so?
I don't know why, and honestly was unaware of that change, but taking a quick look at the decompiled code showed that for all similar lambdas inside the class Roslyn generates instance methods in a singleton nested class called <>c
like this
internal class Program
{
[CompilerGenerated]
[Serializable]
private sealed class <>c
{
public static readonly Program.<>c <>9;
public static Action <>9__0_0;
static <>c()
{
Program.<>c.<>9 = new Program.<>c();
}
internal void b__0_0(int x, int y)
{
Console.WriteLine(x + y);
}
}
}
To me this is a breaking change, but I didn't find any information about that.
What about how to make your code working, I think @Rob answer covers that part.