当前位置:  开发笔记 > 编程语言 > 正文

C#中变量名中@字符的用法/含义是什么?

如何解决《C#中变量名中@字符的用法/含义是什么?》经验,为你挑选了5个好方法。

我发现你可以用C#中的'@'字符开始你的变量名.在我的C#项目中,我使用的是用Java编写的Web服务(我添加了对我的项目的Web引用).WSDL中定义的一个接口对象有一个名为"params"的成员变量.显然,这是C#中的保留字,因此您不能拥有名为"params"的成员变量的类.生成的代理对象包含一个如下所示的属性:

public ArrayList @params {
    get { return this.paramsField; }
    set { this.paramsField = value; }
}

我搜索了VS 2008 c#文档,但找不到任何相关信息.搜索谷歌也没有给我任何有用的答案.那么变量/属性名称中'@'字符的确切含义或用法是什么?



1> Atif Aziz..:

直接来自C#语言规范,标识符(C#) :

前缀"@"允许使用关键字作为标识符,这在与其他编程语言交互时很有用.字符@实际上不是标识符的一部分,因此标识符可能在其他语言中看作普通标识符,没有前缀.带有@前缀的标识符称为逐字标识符.


.NET本身没有像这样定义`@`符号,C#语言规范就是这样.自从它的第一个版本C#1.0(随.NET 1.0发布)以来,它一直支持它.http://csharpindepth.com/articles/chapter1/Specifications.aspx
对于那些想知道的人,在VB.NET中你可以使用`[]`指定一个逐字标识符,例如`Dim [String] As String`.
支持`@`的.NET的目标最小版本是什么?

2> rslite..:

它只允许您使用保留字作为变量名.不推荐恕我直言(除非你喜欢的情况).


@rslite:+1不推荐:)
`@ H​​tml.TextboxFor(,,, new {@ class ="my-css-class"})`是一个很好的例子,你无法真正解决它而不必手动编写HTML,或者让javascript更改属性在以后的阶段.
>*从不*+1不推荐,但永远不要说永远.例如,您可能需要实现使用C#关键字作为标识符的旧COM接口.或者微软可能会在新版本的框架中引入新的关键字 - 例如.NET 1.1债券交易应用程序中的收益率:)
@Joe:新的`yield`关键字不是保留字,只能在*没有标识符合法出现*的上下文中使用.为C#设计新功能的一个目标是以这样的方式构建它们:在添加新功能之前合法的任何程序在之后都是合法的*并具有相同的含义*.

3> Tomer Gabel..:

在C#中,at(@)字符用于表示明确不符合语言规范中相关规则的文字.

具体来说,它可以用于与保留关键字冲突的变量名称(例如,您不能使用参数,但您可以使用@params,与语言规范中的out/ref /任何其他关键字相同).此外,它可以用于未转义的字符串文字; 这与路径常量特别相关,例如,而不是path = "c:\\temp\\somefile.txt"你可以写path = @"c:\temp\somefile.txt".它对正则表达式也很有用.



4> Colonel Pani..:

与Perl的sigils不同@,C#中变量名前面的前缀没有意义.如果x是变量,@x则是同一变量的另一个名称.

> string x = "abc";
> Object.ReferenceEquals(x, @x).Dump();
True

但正如您所发现的那样,@前缀确实有用 - 您可以使用它来澄清C#否则会拒绝的变量名称.

> string string;
Identifier expected; 'string' is a keyword

> string @string;



5> Umar Abbas..:

@符号允许您使用保留关键字作为变量名称.像@int,@string,@double等等.

例如:

string @public = "Reserved Keyword used for me and its fine";

上面的代码工作正常,但下面的代码不起作用:

string public = "This will not compile";

推荐阅读
手机用户2502851955
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有