演算子を使用して 2 つの文字を連結しようとすると+
、コンパイラは次のエラー メッセージを表示しint
ますstring
。
私のコードは次のとおりです。
const string Expr = ('$' + (char)(39));
なぜこのエラーが発生するのですか? どうすれば修正できますか?
2 つの文字で演算子を使用しても、+
それらは連結されません。代わりに、それらを に変換しint
、これらの int を追加して、int
.
問題の簡単な解決策"$"
はstring
、の代わりにを使用することですが'$'
、それはchar
定数式ではないため、新しいコンパイラ エラーで失敗します。
または、整数ステップを完全にスキップして、単に使用することもできますconst string Expr = "$'"
。または、本当に整数コードポイントを使用したい場合は、それを 16 進数に変換して "$\u0027" を使用できます。
いくつかの同様の状況での一般的な回避策は、""
最初に空の文字列と連結することです ( "" + a + b
)。ToString()
または、オペランドの 1 つ (または両方) を手動で呼び出すこともできます。しかし、あなたの場合、$
プレフィックスを文字列に変える方がきれいです。
使用するだけString.Concat
です:
string.Concat('$', (char)39)
とにかく、文字列の + 演算子は内部的にそのメソッドに変換されます。
const
また、そのような表現でキーワードを使用することはできません。readonly
代わりに使用することを検討してください。