2
用下面的代码:为什么我们不能把指针指向一个字符串?
static unsafe void Main(string[] args)
{
int a = 5;
IntPtr pa = new IntPtr(&a); // no error
var xa = pa.ToPointer();
string b = "test";
IntPtr pb = new IntPtr(&b); // compile error
var xb = pb.ToPointer();
}
它产生编译错误:
无法获取的地址,获取的大小,或宣布一个指向托管类型(“类型”)
有一个指向托管类型的指针有什么问题?
[无法获取地址,获取大小或声明托管类型的指针](http://stackoverflow.com/问题/ 13299153 /不能取得这个地址的大小或声明一个指向一个托管吨) – 2014-09-11 08:44:19
可能重复的[使IntPtr在C#.NET点到字符串值](http://stackoverflow.com/questions/11090427/make-intptr-in-c-net-point-to-string-value) – 2014-09-11 08:45:16
编译器100%确信你不能取消引用IntPtr正确。这是正确的,该字符串可以在您初始化IntPtr后的任何时刻,几纳秒后被销毁。 .NET垃圾收集器*不是一个保守的收集器。 – 2014-09-11 09:39:08