当属性名称是关键字时访问动态对象的属性

Phi*_*ipp 2 c# json dynamic

我正在尝试访问这样的 JSON 对象的属性:

using Newtonsoft.Json.Linq;

dynamic myJsonData = JObject.Parse("{ \"out\":123, \"xyz\": 456 }");
Console.WriteLine(myJsonData.xyz); //works          
Console.WriteLine(myJsonData.out); //compiler error ";" expected
Run Code Online (Sandbox Code Playgroud)

但是,最后一行不会编译。

即使 out 是 C# 中的关键字,是否有一种简单的方法可以使用动态属性来获取“out”的值?

dot*_*tom 5

应该通过@在保留关键字前添加来解决:

Console.WriteLine(myJsonData.@out);
Run Code Online (Sandbox Code Playgroud)

这是来自MSDN的引用:

关键字是预定义的保留标识符,对编译器具有特殊含义。它们不能用作程序中的标识符,除非它们包含 @ 作为前缀。例如,@if 是一个有效的标识符,但 if 不是,因为 if 是一个关键字。