none
请问, 在ref class 里面怎么 定义 和 使用数组啊? RRS feed

  • 问题

  • 用VS08建一个class library 工程,  
    想在托管类(ref class)里面定义 和 使用 char类型数组,
    应该怎么做啊? array<char>^ xx;吗?
    能和非托管的char[]兼容吗?
    2010年12月22日 12:12

答案

  • 你好

    这里有个int类型的例子,你可以看看。

    // pin_ptr_1.cpp
    // compile with: /clr 
    using namespace System;
    #define SIZE 10
    
    #pragma unmanaged
    // native function that initializes an array
    void native_function(int* p) {
      for(int i = 0 ; i < 10 ; i++)
      p[i] = i;
    }
    #pragma managed
    
    public ref class A {
    private:
      array<int>^ arr;  // CLR integer array
    
    public:
      A() {
       arr = gcnew array<int>(SIZE);
      }
    
      void load() {
      pin_ptr<int> p = &arr[0];  // pin pointer to first element in arr
      int* np = p;  // pointer to the first element in arr
      native_function(np);  // pass pointer to native function
      }
    
      int sum() {
       int total = 0;
       for (int i = 0 ; i < SIZE ; i++)
         total += arr[i];
       return total;
      }
    };
    
    int main() {
      A^ a = gcnew A;
      a->load();  // initialize managed array using the native function
      Console::WriteLine(a->sum());
    }
    
    希望能对你有所帮助。
    Cookie Luo[MSFT]
    MSDN Community Support | Feedback to us
    Get or Request Code Sample from Microsoft
    Please remember to mark the replies as answers if they help and unmark them if they provide no help.

    • 已标记为答案 Cookie Luo 2010年12月29日 7:43
    2010年12月28日 1:48