SharpLab icon indicating copy to clipboard operation
SharpLab copied to clipboard

Static LINQ expression throws "Type C+<>c has a static constructor"

Open znakeeye opened this issue 1 year ago • 1 comments

Maybe same as those other static related issues, but here I don't see a constructor... Should be fairly easy to support this?

using System.Linq;
using System.Collections.Generic;

public class C {
    public void M() {
        List<string> list = [];        
        var a = list.Select(static s=> s.Length < 10).ToList();
    }
}

znakeeye avatar Oct 25 '24 19:10 znakeeye

If you look at the Roslyn-generated code, you can see that there is a static object for the closure that is being initialized. So static constructor is automatically generated for it. IL output confirms this:

// Methods
.method private hidebysig specialname rtspecialname static
    void .cctor () cil managed

KeterSCP avatar Nov 22 '24 05:11 KeterSCP