変数の名前に特殊文字を使用して匿名型を作成したい
たとえば、私はこれを持っています:
new { status = "Active" }
何か欲しいのですが
new { status = "Active", $exists = true }
これは最終的にJSONにシリアル化されるため、JObjectなどを使用できることはわかっていますが、匿名タイプの方がはるかに簡単です。
変数の名前に特殊文字を使用して匿名型を作成したい
たとえば、私はこれを持っています:
new { status = "Active" }
何か欲しいのですが
new { status = "Active", $exists = true }
これは最終的にJSONにシリアル化されるため、JObjectなどを使用できることはわかっていますが、匿名タイプの方がはるかに簡単です。
あなたはルールに固執する必要があります!これを(文字列としてではなく)匿名型のコードとして記述しているため、コードはコンパイルされません。そのため、キーは言語の識別子である必要があります。
言語にはルールがあります。identifier-start-character
識別子は、定義された有効なもので始まる必要があります。
クラスLu、Ll、Lt、Lm、Lo、またはNlのUnicode文字
このルールに従って:
http://www.jaggersoft.com/csharp_grammar.html#identifier-start-character
このテーブルを使用すると、3番目の列は、「$」が「Sc」クラスにあるため、使用できないことを示しています。
http://www.unicode.org/Public/UNIDATA/UnicodeData.txt
もし私があなただったら、私は次の3つのことのいずれかを行います。
苦労すると思います。特殊文字はまさにそれです-特別です。それらはコンパイラにとって重要な意味を持っており、それを打ち負かすことは(不可能ではないにしても)簡単ではありません。
さらに、という名前の変数を作成できた場合は$exists
、紛らわしいコードを作成することになります。シンボルはC#とjQueryで意味を持っている$
ので、コードを読む人は誰でも何が起こっているのか不思議に思うかもしれません。
私の意見では、それはおそらくそれが価値があるよりも厄介です。
最終的にコンパイラによって同じ名前のプロパティに変換されるため、$existsは機能しません。また、プロパティ値では、この命名規則は許可されていません。