语言不支持'TEST'



当我调用C++函数时:

public ref class TEST_CLASS
{
    void TEST(void (*func)())
    {
        (*func)()
    }
};

在C#中:

TEST_CLASS t = new TEST_CLASS();
t.TEST(f);

我得到错误:

语言不支持"TEST"

是什么原因导致了这个错误?我该怎么修?

当我调用C++函数时:

这不是C++代码,您编写了一个C++/CLI类。注意ref class关键字。您声明该方法采用C函数指针。这在C++/CLI语言中很好,它允许您混合本机代码结构和托管代码结构,但对于C#或VB.NET这样的语言来说,并不好。他们坚持要求您使用函数指针的托管版本,即委托

.NET框架中已经有一个委托类型与C函数指针MethodInvoker的签名匹配。但让我们假设你想扩展签名,并添加,比如说,你自己的参数和返回类型:

public ref class TEST_CLASS
{
public:
    delegate void TEST_delegate();
    void TEST(TEST_delegate^ func)
    {
        func();
    }
};

取这个名字有点伤人。

最新更新