在 .NET 中存储二进制数据的首选方式是什么?
我试过这个:
byte data __gc [] = __gc new byte [100];
并得到这个错误:
error C2726: '__gc new' may only be used to create an object with managed type
有没有办法管理字节数组?
在 .NET 中存储二进制数据的首选方式是什么?
我试过这个:
byte data __gc [] = __gc new byte [100];
并得到这个错误:
error C2726: '__gc new' may only be used to create an object with managed type
有没有办法管理字节数组?
您使用的是托管 C++ 还是 C++/CLI?(我可以看到 Jon Skeet 编辑了问题以将 C++/CLI 添加到标题中,但在我看来,您实际上是在使用托管 C++)。
但不管怎么说:
在托管 C++ 中,你会这样做:
Byte data __gc [] = new Byte __gc [100];
在 C++/CLI 中,它看起来像这样:
cli::array<unsigned char>^ data = gcnew cli::array<unsigned char>(100);
CodeProject:C++/CLI 中的数组
据我所知,'__gc new' 语法已被弃用,请尝试以下操作:
cli::array<byte>^ data = gcnew cli::array<byte>(100);
我注意到您在使用 cli 命名空间时遇到问题。在 MSDN 上阅读此命名空间以解决您的问题。
我不知道这样做的首选方式。但是,如果您只想编译它,以下是我机器上的 C++/CLI CLRConsole 项目中的工作代码。
#include "stdafx.h"
using namespace System;
int main(array<System::String ^> ^args)
{
cli::array<System::Byte^>^ a =
gcnew cli::array<System::Byte^>(101);
a[1] = (unsigned char)124;
cli::array<unsigned char>^ b =
gcnew cli::array<unsigned char>(102);
b[1] = (unsigned char)211;
Console::WriteLine(a->Length);
Console::WriteLine(b->Length);
Console::WriteLine(a[1] + " : " + b[1]);
return 0;
}
输出:
101
102
124 : 211
a
是托管字节的托管数组。并且b
是无符号字符的托管数组。C++ 似乎没有byte
内置数据类型。