语言不支持"TEST"

Sam*_*m H 2 c# methods c++-cli visual-c#-express-2010

当我调用C++函数时:

public ref class TEST_CLASS
{
    void TEST(void (*func)())
    {
        (*func)()
    }
};
Run Code Online (Sandbox Code Playgroud)

在C#中:

TEST_CLASS t = new TEST_CLASS();
t.TEST(f);
Run Code Online (Sandbox Code Playgroud)

我收到错误:

语言不支持"TEST"

会导致此错误的原因是什么?我该如何解决?

Han*_*ant 6

当我调用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();
    }
};
Run Code Online (Sandbox Code Playgroud)

挑选这个名字有点伤害.