2

根据 MSDN,我们可以在不安全的上下文中获取变量的地址。
我们可以在不安全声明的方法中获取变量的地址,但为什么不能在所有不安全的上下文中获取它?

static void Main(string[] args) {      
    //Managed code here
    unsafe {
        string str = "d";
        fixed (char* t = &str[0]) {// ERROR :  Cannot take the address of the given expression
        }
    }
    //Managed code here
}
4

2 回答 2

2

它只是无效的 C# 语法。字符串不是数组,它只是看起来像一个。尝试:

unsafe 
{
   string str = "d";
   fixed (char* t = str) 
   {
       char c1 = *t;
       char c2 = t[0];
   }
}
于 2013-02-26T20:53:19.550 回答
1

获取字符串地址的正确方法是这样的:

char* t = str

http://msdn.microsoft.com/en-us/library/f58wzh21.aspx

于 2013-02-26T20:54:25.117 回答