Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/315.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 我可以有什么样的财产名称?_C#_Properties - Fatal编程技术网

C# 我可以有什么样的财产名称?

C# 我可以有什么样的财产名称?,c#,properties,C#,Properties,我们可以有像$ref#schema这样的属性名吗?如果是,怎么做?若否,原因为何? 我真的要做这样的事 dynamic d = new ExpandoObject(); d.$ref = somevlaue; 但我不能这么做 另外,我如何解决关键字不能是属性名这一事实?该语言有可接受名称字符的指导原则。在您的情况下,您可以尝试使用@ref使用 public string @class {get; set;} 用于将关键字用作变量名。有关更多信息,您可以查看。的规则,因为您主要对Expando

我们可以有像
$ref#schema
这样的属性名吗?如果是,怎么做?若否,原因为何? 我真的要做这样的事

dynamic d = new ExpandoObject();
d.$ref = somevlaue;
但我不能这么做


另外,我如何解决关键字不能是属性名这一事实?

该语言有可接受名称字符的指导原则。在您的情况下,您可以尝试使用
@ref

使用

public string @class {get; set;}

用于将关键字用作变量名。有关更多信息,您可以查看。

的规则,因为您主要对
ExpandoObject
感兴趣,解决方法是通过将ExpandoObject强制转换为
IDictionary
,直接设置和/或检索这些属性名:

dynamic d=newexpandoobject();
var dict=(i词典)d;
dict[“$ref”]=“哈哈!”;

在属性名中包含
$
#
有什么意义?这是我通常做的,还有其他方法吗?否-C编译器将不允许您使用语言规范(第2.4.2节)详述的无效属性名成功编译,即包含
$
dynamic d = new ExpandoObject();
var dict = (IDictionary<string, Object>)d;
dict["$ref"] = "haha!";