创建一个以数字开头的属性。

12

为什么我不能在类中以数字或特殊字符开头创建属性?

P.S. 我对C#比较新。

public class Test
{
 public int 1property {get;set;}
}
4个回答

35

如果你跟我一样,搜索这个内容是因为你想要反序列化一个起始数字命名的属性的第三方API返回的JSON数据:

using Newtonsoft.Json;
public class ThirdPartyAPIResult
{
    [JsonProperty("24h_volume_usd")]
    public double DailyVolumeUSD { get; set; }
}

1
我和你一样。谢谢。 - SilentCoder
有趣。我的问题属性与名称相同。 :) - user850010
然后,只需使用以下代码进行反序列化:JsonConvert.DeserializeObject<List<T>>(string); 适用于多个 JSON 对象。 - Andy
这真是帮了大忙,谢谢你。 - AtLeastTheresToast

18

因为 C# 语言规范(特别是第 2.4.2 节)规定你不能这样做。

这也能使解析器更容易地确定一个给定的令牌是一个字面数还是一个标识符。标识符中可以包含数字,但不能以数字开头。任何标识符的第一个字母必须是字符或下划线字符 (_)。


7

我也认为这是最好的答案。大多数情况下,最好将数字/数值后缀化,可以用拼写或数字形式表示。此外,考虑使用序数方法,例如 FirstObjectSecondObject。在其他情况下,根据它们的来源进行区分可能是有益的,例如 SourceObjectDestinationObjectTargetObject - Erik

6
根据 C# 标识符规则,标识符不能以数字开头。因此,您不能创建以数字开头的变量名、类名、方法名、接口名或属性名,但是可以使用下划线作为开头。请尝试以下操作:
public class Test
{
    public int _1property {get;set;}
}

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接