在不安全的上下文中考虑以下代码:
string mySentence = "Pointers in C#";
fixed (char* start = mySentence) // this is the line we're talking about
{
char* p = start;
do
{
Console.Write(*p);
}
while (*(++p) != '\0');
}
Console.ReadLine();
Run Code Online (Sandbox Code Playgroud)
这很好用.
根据http://msdn.microsoft.com/en-us/library/f58wzh21(v=VS.100).aspx我应该能够替换我标记的行
fixed(char* start = &mySentence[0])
Run Code Online (Sandbox Code Playgroud)
但不幸的是VS给了我以下错误.
无法获取给定表达式的地址
这个错误在我身边吗?
VS.NET 2010 Premium.
Eri*_*ert 12
这个错误在我身边吗?
没有; 错误发生在您链接到的文档中.它指出:
fixed (char* p = str) { /*...*/ } // equivalent to p = &str[0]
Run Code Online (Sandbox Code Playgroud)
评论不正确; 正如您所记录的那样,获取字符串内部的地址是不合法的.获取数组内部的地址是合法的.
固定声明的合法初始化者是:
&应用于变量引用. str[0]不是变量引用,因为首先,字符串元素不是变量,第二,因为这是对索引函数的调用,而不是对变量的引用.它也不是数组,字符串或固定大小的缓冲区,因此它不应该是合法的.
我将与文档管理员聊聊,我们将看看是否可以在以后的文档修订版中修复此问题.谢谢你引起我的注意.
更新:我已经与其中一位文档管理员交谈,他们告诉我,我们刚刚通过了下一次计划修订文档的截止日期.建议的更改将在下一个版本的队列中进行修订.
| 归档时间: |
|
| 查看次数: |
6099 次 |
| 最近记录: |