从静态 class 传递委托数组

Passing delegate array from static class

我正在尝试实例化一个 class,它接受从静态 class 的静态方法到 cunstructor(Func<string, bool>[]) 的委托数组,它抛出异常System.ArgumentException: Delegate to an instance method cannot have null 'this'.

在静态 class 内部使用此数组本身不会造成问题,仅当我尝试传递数组时才会出现异常。

public static class Program
{
    private static readonly MyAnotherClass MyAnotherField; // this is the error, see the answer below

    private static readonly Func<string, bool>[] UsefulMethods =
    {
        UsefulMethod1,
        // other methods
    }

    private static readonly MyClass MyClassField = new MyClass(UsefulMethods);

    public static void Main(string[] args)
    {
        MyClassField.Handle(); // exception occurs here
    }

    private static bool UsefulMethod1(string value)
    {
         // some logic
         return true;
    }
}

public class MyClass
{
    private readonly Func<string, bool>[] Methods;
    
    public MyClass(Func<string, bool>[] methods)
    {
        // guards
        Methods = methods;
    }

    public void Handle()
    {
        // some logic
    }
}

我错过了什么?

所以我找到了解决方案。

示例在 fiddle 中不可重现,但在我的环境中,由于静态只读字段,我没有包含。

在上面的示例中,还应该有一个字段:

private static readonly MyAnotherClass MyAnotherClassField;

未在任何地方实例化。虽然我仍然不明白,为什么会抛出关于委托的异常,进行此更改:

private static readonly MyAnotherClass MyAnotherClassField = new MyAnotherClass();

使一切正常。