我是一个新手,对于C#还不太熟悉,有一个简单(?)的问题。我从非托管代码中收到一个int指针:
public foo(ref IntPtr state)
{
_myState = state;
}
_myState
是该类的IntPtr
成员。现在,我想通过_myState
与非托管C++代码交换状态。如果我写下以下内容,一切都能正常工作:
public foo(ref IntPtr state)
{
_myState = state;
....do some stuff
state = 7;
}
在未经管理的应用程序中,我可以看到新值
7
。但如果我写成这样:public foo(ref IntPtr state)
{
_myState = state;
...do some stuff
_myState = 7;
}
那么什么都不会发生。state的初始值为
0
,当将myState
更改为7
时,在未经管理的应用程序中它不会被更新。
如何将成员变量_myState
分配给状态参数作为“指针”,这样当状态更新时,_myState
也会更新?
在C++中,使用指针就没有问题了...好的,这是真正的代码:
[DllExport("QFX_InitializeInterfaceObject", CallingConvention = CallingConvention.StdCall)]
public static void QFX_InitializeInterfaceObject(
long windowHandle,
ref IntPtr processState)
{
ChartWindowHandle = (IntPtr)windowHandle;
OrderCommandProcessState = processState;
}
我希望的是OrderCommandProcessState
和它的值能够得到与processState
相同的引用。