C# unsafe
블록의 void*
에 CLR 유형에 대한 포인터를 할당하는 방법이 있습니까?CLR 유형에 대한 포인터를 void *에 할당하는 것은 안전하지 않습니까?
var bar = 1;
var foo = new Foo();
unsafe
{
void* p1 = &bar;
void* p2 = &foo; // fails at compile time
}
또는이 유일하게 가능한 사용하여 C++/CLI :
System::Text::StringBuilder^ sb = gcnew System::Text::StringBuilder();
void* p1 = &sb;
가 관리되는 개체에 대한 포인터를 얻으려면 C#
어리석은 질문 일 수는 있지만 왜 무효 포인터가 필요합니까? –
은 void 포인터 일 필요는 없지만 int와 같은 프리미티브 또는 System.Text.StringBuilder와 같은 복잡한 유형이 될 수있는 값에 대한 포인터가 필요하다. int (일명 "Object"처럼 느리게 처리 할 수는 없습니다) – thr
무엇을하려고 하느냐에 따라 generics 사용을 고려해야합니다. 제네릭은 값 유형을 boxing하지 않고 다양한 유형을 처리하는 C# 방식입니다. –