バイナリ データを .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
バイト配列を管理する方法はありますか?
Managed C++ または C++/CLI を使用していますか? (Jon Skeet が質問を編集して C++/CLI をタイトルに追加したことがわかりますが、実際には Managed C++ を使用しているように見えます)。
とにかく:
Managed 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
マネージド バイトのマネージド配列です。unsigned b
char のマネージド配列です。C++ にはbyte
データ型が組み込まれていないようです。