用P/INVOKE调用一个C++ DLL,其中一个函数是void GetPrivateVersion(int * version1, int * version2);
在C#里面,我是这样:  
     [DllImport("LASY.dll")]
      public static extern void GetPrivateVersion(out Int32 version1, out Int32 version2);   public void getVersion(out Int32 version1, out Int32 version2)
        {
  
            if (_created == true)
            {
                ImportDLLClass.GetPrivateVersion(out version1, out version2);
            }
                
        }
编译无法通过,错误信息:
 The out parameter 'version1' must be assigned to before control leaves the current method
 The out parameter 'version2' must be assigned to before control leaves the current method
应该怎么处理?

解决方案 »

  1.   

    我自己解决了,改成这样就行了:
      public void getVersion(out Int32 version1, out Int32 version2)
            {
      
                if (_created == false)
                {
                    version1 = -1;
                    version2 = -1;
                    return;
                    
                }           ImportDLLClass.GetPrivateVersion(out version1, out version2);
                    
            }来个朋友回复一下吧,我把分数给出
      

  2.   

    int* ref int
    *int IntPtr
    out保证每一个传出变量都必须被赋值
    public void getVersion(out Int32 version1, out Int32 version2)
            {
             ImportDLLClass.GetPrivateVersion(out version1, out version2);
            }
      

  3.   

    拾分来了
    凡是加out的,方法返回之前一定要赋值
      

  4.   

    OUT 是输出参数,在输出前要赋值REF不用
      

  5.   

    out在声明变量时不用赋值,但返回时必须要有值