据我所知,根据MSDN C#fixed语句应该像:
fixed (char* p = str) ... // equivalent to p = &str[0]
Run Code Online (Sandbox Code Playgroud)
所以,为什么我不能这样做?
const string str = "1234";
fixed (char* c = &str[0])
{
/// .....
}
Run Code Online (Sandbox Code Playgroud)
str[1]作为一个例子,我怎样才能得到指针?
当我尝试使用固定初始化一个新的 char* 数组,同时与其他事物一起进行初始化时,它不起作用。下面的代码是一个例子
fixed (char* buffer = new char[25])
{
//This works just fine
};
fixed (char* origionalPhrase = phrase, char* buffer = new char[25])
{
//This does not
}
Run Code Online (Sandbox Code Playgroud)
语法解析器将新 char[25] 强调为“无法将类型 'char[]' 隐式转换为 'char*'”。我需要将这两个变量初始化为 char* 数组。第一个变量 origionalPhrase 变量初始化得很好。MSNDN 文档指出:
fixed (byte* ps = srcarray, pd = dstarray) {...}
Run Code Online (Sandbox Code Playgroud)
将工作。
我使用了这篇MSDN 文章。