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

最佳答案

你有两个选择:

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

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

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

// Call:
MyMethod<bool>(false);

System.Object (这意味着您必须在方法中确定对象的实际类型并进行适当的转换)
// Definition:
public void MyMethod(Object myParameter)
{
    /* My Code */
}

// Call:
MyMethod(999);

// Call:
MyMethod(false);

关于c# - C# 中的 void* 替代方案,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/5992585/

10-14 22:07