または、「私は間違っているのですか?なぜコンパイラはこれのために複雑な構文を必要としますか?
私は文字列を返す小さな関数を書いています。必要に応じて引用符で囲んだり(quoted-printableとして)、それ以外の場合はそのまま返します。文字が関数に入力されます。結果は文字列です。私が最初に実行しようとしました何
た:
private string QuotedChar(char ch) {
if(ch < (char)128 && !char.IsWhiteSpace(ch))
return(new string(ch));
// ...
}
しかし、コンパイラは、そのreturn文をコンパイルするときCS0214、「ポインタと固定サイズのバッファが危険な状況でのみ使用することができる」と言います。コードを変更して、代わりに言うと:
private string QuotedChar(char ch) {
if(ch < (char)128 && !char.IsWhiteSpace(ch))
return(new string(new char[] { ch }));
// ...
}
...うまくいきます。しかし、それはむしろ意味がないようです。私はポインタか固定サイズのバッファを使用しようとしていると考えている理由は分かりません。私は真剣に愚かなものを見逃しているのですか?これは問題/バグですか?
FYI、これはMicrosoft .NET FrameworkではなくMono 2.0です。私はWindowsを実行しないので、同じことをしているかどうかを確認するためにMicrosoftのC#コンパイラを持っていないので、バグかどうか疑問です。
A-ha。それは動作します。面白い;私はMSDNで見つけられませんでしたが、Monoはcharを取ったコンストラクタを示しました。私はあなたが正しいかもしれないと思う:MonoDevelopの完了表の 'char *'を表示しないので、ポインタ。ありがとう! –
私は、考えられる過負荷を間違って表示しているMonoDevelopのバグだと思っています。 –
それはそうだね。 Subversionからツリーをビルドしてそこにまだ存在していることを確認するとすぐにバグレポートを提出します。 –