带有特殊字符的C#变量名

带有特殊字符的C#变量名,c#,.net,c#-4.0,C#,.net,C# 4.0,我想在C#中的字符串变量名中包含一些特殊字符 示例: string foo bar=string.Empty 就我所知,我不能像上面例子中提到的那样声明变量。 有没有办法声明包含“-”的变量名?没有,这在C#中是不可能的 如果你真的,真的,真的想这样做,你可以使用一本字典: 不只是使用变量名,而是在字典中查找字符串。请注意,这是非常低效的,只是一个玩笑,所以请不要真正使用它;) 在c#和大多数其他编程语言中都无法做到这一点。。我还建议您遵循C#命名约定,因为它可以帮助您以一种(至少对我来说)总

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

示例: string foo bar=string.Empty

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

没有,这在C#中是不可能的


如果你真的,真的,真的想这样做,你可以使用一本字典:

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

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

来自:

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

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


若您正试图反序列化对象,那个么可以使用JsonProperty来取消此操作

例如:

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

为什么需要包含“-”?有兴趣听听原因。你需要这个来序列化吗?使用属性。它是MVC中的HTML属性吗?使用下划线。解释一下为什么需要它。@CodeCaster我正在尝试使用c#开发类似于css3预编译器的sass。许多css属性名称包括“-”。因此,我将所有css属性声明为涉及“-”的属性。当我使用反射或表达式树将.cs文件转换为.css时,我将从属性中获得准确的css属性名称。@kranthiv我想你的问题需要一个字典类型。F#很好,变量命名灵活,甚至允许空格,使用了一种引号/括号。
string newstring = someVars["foo-bar"] + "Hello World!";
public class SubscriptionListJsonData
{
    [JsonProperty(PropertyName = "subscriptions")]
    public string SubscriptionData { get; set; }
    [JsonProperty(PropertyName = "@nextLink")]
    public string nextLink { get; set; }
}