或者,“我做错了吗”?
我正在编写一个小函数,该函数将返回一个字符串,如有必要,将其引用(作为可引用的可打印),否则按原样返回。一个字符被输入到函数中;结果是一个字符串。
我最初尝试做的是:
private string QuotedChar(char ch) {
if(ch < (char)128 && !char.IsWhiteSpace(ch))
return(new string(ch));
// ...
}
但是,编译器在编译返回语句时说 CS0214,“指针和固定大小的缓冲区只能在不安全的上下文中使用”。如果我将代码改为:
private string QuotedChar(char ch) {
if(ch < (char)128 && !char.IsWhiteSpace(ch))
return(new string(new char[] { ch }));
// ...
}
...它工作得很好。然而,这似乎毫无意义。我不明白为什么它认为我正在尝试使用指针或固定大小的缓冲区,因为它只是一个字符。我是否错过了一些非常愚蠢的东西,或者这是一个问题/错误?
仅供参考,这是 Mono 2.0,而不是 Microsoft .NET Framework。我不运行 Windows,所以我没有微软的 C# 编译器来查看它是否做同样的事情,这就是为什么我想知道它是否是一个错误。