刚开始写C# 调用C++的DLLC++ DLL 对外接口声明如下extern "C" __declspec(dllexport) int GetSnapshotValues(int PointNum,LPCSTR strPtName[],float* fPtValue,short* iState)
在C#中使用了两种方式调用//第一种 声明
public static extern int GetSnapshotValues(int nNum, string[] StrParam,float[] ParamNum,short[] DbType);//第二种 声明
public static extern int GetSnapshotValues(int nNum, string[] StrParam,ref float[] ParamNum,ref short[] DbType);//调用
          string[] tt = { "1q", "2s", "3r", "4t", "5h" };
          float[] ffa = new float[10];
          short[] ssa = new short[10];
          //第一种调用
          int Res = GetSnapshotValues(5, tt, ffa, ssa); //可以正常执行  参数ffa, ssa取得返回值          //第二种调用
          //int Res = GetSnapshotValues(5, tt,ref  ffa, ref ssa);//参数ffa, ssa可以取得返回值 但函数执行完报错
          //"引发类型为“System.ExecutionEngineException”的异常。"
          return string.Format("success");我现在知道传递数组时传递的是引用  我想弄明白的是如果使用
第二种方式 参数ref float[] ParamNum  与与第一种float[] ParamNum 有什么不同呢?
是否可以将ref float[] ParamNum  理解为二维数组 而 float[] ParamNum 是一维的??因此引申下来 如果我在C++中使用二维数组 那么在C#中该怎么声明函数呢?