void*C#中的替代品

Pij*_*usn 3 c# arguments function void-pointers

我正在创建一个调用回调函数的类,我希望它在某些情况下传递一些数据,但数据可能会有所不同.在C++中我会使用void*但在C#中它是不安全的,这意味着它可能会得到GCed.有没有办法在C#中传递未知类型的数据?

I a*_*ica 8

你有两个选择:

泛型(允许您在调用方法时指定类型...并且对象将在方法中正确键入.)

// Definition:
public void MyMethod<T>(T myParameter)
{
    /* My Code */
}

// Call:
MyMethod<int>(999);

// Call:
MyMethod<bool>(false);
Run Code Online (Sandbox Code Playgroud)

System.Object(这意味着您必须确定方法中的对象的实际类型并进行适当的转换)

// Definition:
public void MyMethod(Object myParameter)
{
    /* My Code */
}

// Call:
MyMethod(999);

// Call:
MyMethod(false);
Run Code Online (Sandbox Code Playgroud)

  • 只要准备好你想要的任何类型转换. (3认同)
  • @Tejs:我甚至会说"演员"不是"转换" (3认同)