编写属性名称C#是否有任何限制

时间:2015-07-13 05:51:22

标签: c#

我写了一个像

这样的类定义
 public class Item
        {
            public double? 30dhi { get; set; }
            public double? 30dlo { get; set; }
            public double? 7dhi { get; set; }
            public double? 7dlo { get; set; }
        }

为什么它不允许我添加包含字母数字键的属性 错误如下所示

  

类,结构或接口成员声明的无效标记'30d'

1 个答案:

答案 0 :(得分:9)

  

为什么它不允许我添加包含字母数字键的属性

属性名称必须是标识符。 C#中的标识符不能以数字开头。您可以在第一个字符后有一个数字,但不能为第一个字符

有关标识符允许内容的准确详细信息,请参阅C#5规范的第2.4.2节。完整的语法太长了,无法在这里发布,但关键部分是:

  

标识符或关键字
   identifier-start-character 标识符 - 部分字符 opt

     

标识符 - 开始 - 字符
  字母字符
  _(下划线字符U + 005F)

     

标识符部分的字符
  标识符部分字符
  标识符 - 部分字符 标识符 - 部分字符

     

标识符部分字符
  字母字符
  十进制数字符
  连接字符
  组合字符
  格式化字符

     

字母字符
  类Lu,Ll,Lt,Lm,Lo或Nl的Unicode字符   表示Lu,Ll,Lt,Lm,Lo或Nl类字符的unicode-escape-sequence

请注意,30d的示例非常适合为什么不允许 - 这实际上是数字文字,值为30且类型为double。 (当然,你实际上有30dhi,但解析器已将30d解析为令牌。)