【问题标题】:C# variable names with special character带有特殊字符的 C# 变量名
【发布时间】:2014-08-09 09:36:35
【问题描述】:

我想在 C# 中的 string 变量名中包含一些特殊字符。

示例: string foo-bar = String.Empty;

据我所知,我不能像上面示例中提到的那样声明变量。 有没有办法声明一个包含“-”的变量名?

【问题讨论】:

  • 为什么要包含“-”?有兴趣听听原因。
  • 序列化需要这个吗?使用属性。是针对 MVC 中的 HTML 属性吗?使用下划线。解释你为什么需要这个。
  • @CodeCaster 我正在尝试使用 c# 开发像 css3 预编译器一样的 sass。许多 css 属性名称都包含“-”。因此,我将所有 css 属性声明为涉及“-”的属性。当我使用反射或表达式树将 .cs 文件转换为 .css 时,我将从属性中获得准确的 css 属性名称。
  • @kranthiv 我认为您的问题需要字典类型。

标签: c# .net c#-4.0


【解决方案1】:

来自MSDN

您不能只选择任何字符序列作为变量名。然而,这并不像听起来那么令人担忧,因为您仍然有一个非常灵活的命名 系统。 基本变量命名规则如下:

变量名的第一个字符必须是字母、下划线字符 (_) 或 at 符号 (@)。 后续字符可以是字母、下划线字符或数字。

【讨论】:

    【解决方案2】:

    不,这在 C# 中是不可能的。


    如果您真的、真的、真的想要这样做,您可以使用Dictionary<string, string>

    Dictionary<string, string> someVars = new Dictionary<string, string>()
                                          {
                                              {"foo-bar", String.Empty},
                                              {"bar-foo", "bazinga"}
                                          }
    

    使用它们看起来像这样:

    string newstring = someVars["foo-bar"] + "Hello World!";
    

    您可以在字典中查找字符串,而不是只使用变量名。请注意,这是非常低效的,只是作为一个玩笑,所以请不要真正使用它;)

    【讨论】:

      【解决方案3】:

      如果你想反序列化对象,你可以使用 JsonProperty 来实现。

      例子:

      public class SubscriptionListJsonData
      {
          [JsonProperty(PropertyName = "subscriptions")]
          public string SubscriptionData { get; set; }
          [JsonProperty(PropertyName = "@nextLink")]
          public string nextLink { get; set; }
      }
      

      Follow this link for partially reading Json.

      【讨论】:

        【解决方案4】:

        你不能在 c# 和大多数其他编程语言中做到这一点。我还建议你遵循 C# 命名约定,因为它可以帮助你以一种至少对我来说总是感觉舒服的方式阅读你的代码。

        【讨论】:

        • F# 的变量命名很好而且很灵活,甚至允许空格,有一种使用的引号/括号。
        猜你喜欢
        • 1970-01-01
        • 2012-05-01
        • 2014-07-16
        • 2021-03-29
        • 2017-06-15
        • 2016-06-19
        • 2014-04-17
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多