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