繁体   English   中英

C# - 尝试从 function 构造 class,得到无法转换方法组错误

[英]C# - Trying construct a class from a function, getting Cannot convert method group error

我正在尝试将 function 封装在 class 中,但它不起作用。 我在这里想念什么?

public class MyClass<Return, T>
{
        public delegate void D01(T val);
        public D01 d01;
        public delegate void D02(T val, T val2);
        public D02 d02;
 
        public MyClass(D01 func)
        {
            d01= func;
        }

        public MyClass(D02 func)
        {
            d02= func;
        }
    }

    public class ABC
    {
   
        public void MyGenericFunction<T>(MyClass<T, T> function, T var01)
        {
            ...
        }
    }

    class OtherClass
    {
        private ABC abc = new ABC();
        private void Test(float x) {...}
        private void OtherFunc()
        {
            float x = 1.0f;
            abc.MyGenericFunction<float>(Test, x);
            //Gives Cannot convert method group to MyClass<float,float> error
        }
    }

它应该能够将 function 转换为相同类型的委托。 我也有带有 Func 和 Action 参数的相同构造函数,但也无法让它们工作。

哇,这里发生了很多事情......我猜你实际上希望FuncMyClass<T, T> function

public void MyGenericFunction<T>(Func<T, T> function, T var01)
{
   ...
}

...

private float Test(float x)
{
   ...
}

private void OtherFunc()
{
   float x = 1.0f;
   abc.MyGenericFunction<float>(Test, x);
}

在你真正想要的机会上

public void MyGenericFunction<T>(MyClass<T, T> function, T var01)

然后你可能想要更像这样的东西

abc.MyGenericFunction<float>(new MyClass<float, float>(Test), x);

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM