我想在一個變量在匿名類型特殊字符
例如名稱創建一個匿名類型特殊字符我有這樣的:
new { status = "Active" }
我想是這樣
new { status = "Active", $exists = true }
這最終會序列化爲JSON,所以我知道我可以使用JObject或類似的東西,但作爲匿名類型會更容易。
我想在一個變量在匿名類型特殊字符
例如名稱創建一個匿名類型特殊字符我有這樣的:
new { status = "Active" }
我想是這樣
new { status = "Active", $exists = true }
這最終會序列化爲JSON,所以我知道我可以使用JObject或類似的東西,但作爲匿名類型會更容易。
你必須堅持規則!你的代碼不會被編譯,因爲你將它寫成代碼中的匿名類型(而不是字符串),所以鍵必須是該語言中的標識符。
該語言有規則。一個標識符具有開始與一個有效identifier-start-character
,定義:
類路中,L1,LT,LM,羅,或NL
Unicode字符作爲每個這樣的規則:
http://www.jaggersoft.com/csharp_grammar.html#identifier-start-character
使用這個表格,第三列告訴我們''''在'Sc'類中,所以你不能使用它。
http://www.unicode.org/Public/UNIDATA/UnicodeData.txt
如果我是你,我會做的三兩件事之一:
我想你會遇到困難的。特殊字符就是這樣 - 特別的。它們對編譯器有着重要的意義,要打敗它並不容易(如果不是不可能的話)。
此外,如果您確實設法創建名爲$exists
的變量,您將創建一些令人困惑的代碼。 $
符號在C#和jQuery中有意義,所以任何讀取你的代碼的人都會想知道發生了什麼。
在我看來,這可能比它的價值更麻煩。
你是對的,但它只是用於序列化爲JSON。 –
您$存在將無法正常工作BEC最終它會被編譯器翻譯爲具有相同名稱的屬性。而在屬性值這個命名約定是不允許的!
感謝您的徹底解答。我明顯知道編譯器的限制,我希望有一個解決方法。因爲無論如何它只是JSON序列化,我只是將該對象創建爲JObject。 –
祝你好運,你在做什麼! – Joe
哈哈我不知道神祕點3是什麼。我會留在那裏,讓答案更加神祕。 – Joe