有沒有辦法在一個C#unsafe
塊分配一個指向CLR類型的void*
?將指針指向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#
可能是一個愚蠢的問題,但爲什麼你需要一個無效的指針呢? – 2010-02-02 13:52:47
不一定是一個void指針,但我需要一個指向一個值的指針,該值可以是像int這樣的基本類型,也可以是像System.Text.StringBuilder這樣的複雜類型,而不必在它們之間有所區別, int(也就是說,不能像「Object」那樣把它放慢) – thr 2010-02-02 13:55:42
根據你要做的事情,你應該考慮使用泛型。泛型是C#處理各種類型的方式,而不用裝箱值類型。 – 2010-02-02 20:56:52