C++/CLI语法简介
ref class:相当于C#中的class,需要通过MyRefClass ^和gcnew、delete使用。
<code class="language-cpp">MyRefClass ^obj = gcnew MyRefClass(); obj->MyMethod(); delete obj; // 相当于C++中的obj.Dispose(); </code>
value class:相当于C#中的struct,可以直接声明MyValueClass变量来使用。
<code class="language-cpp">MyValueClass struct1; struct1.MyMethod(); </code>
无论是ref class还是value class,它们的成员字段&取地址后都是interior_ptr<T>内部指针,需要使用pin_ptr<T>固定以后才能转换为T*普通指针。
<code class="language-cpp">pin_ptr<int> ptr = &this->a; printf("%p\n", (int *)ptr); </int></code>
堆栈上的变量直接&取地址就可以获得T*普通指针。
<code class="language-cpp">int val = 2; printf("%p\n", (int *)&val); </code>
String ^转换成const wchar_t *,使用PtrToStringChars和pin_ptr<const wchar_t>。
<code class="language-cpp">#include <vcclr.h> // PtrToStringChars pin_ptr<const wchar_t> pinstr = PtrToStringChars(str); MessageBox(NULL, (const wchar_t *)pinstr, L"消息框标题", MB_OK); </const></vcclr.h></code>
const wchar_t *转换成String ^,直接使用String类的构造函数即可。
<code class="language-cpp">wchar_t cstr[] = L"这是一个C语言宽字符串"; String ^str = gcnew String(cstr); </code>
时段 | 个数 |
---|---|
{{f.startingTime}}点 - {{f.endTime}}点 | {{f.fileCount}} |