Или "я делаю это неправильно"?
Я пишу небольшую функцию, которая будет возвращать строку, заключенную в кавычки (как кавычки для печати), если это необходимо, в противном случае она возвращает ее как есть. В функцию вводится символ; результатом является строка.
То, что я пытался сделать сначала, было:
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, поэтому у меня нет компилятора Microsoft C#, чтобы увидеть, делает ли он то же самое или нет, поэтому мне интересно, является ли это ошибкой.