繁体   English   中英

在C#中使用@的最佳实践

[英]Best practices for using @ in C#

在阅读有关C#的书籍时,我遇到了使用@来“重载”或使用C#关键字作为标识符的代码。 我猜这不是一个好习惯,因为它会导致歧义。 我是否正确地想到这一点,或者有时候应该使用它?

实际上,几乎总是值得避免这种情况。 它可能有用的主要有效时间是处理具有恰好是C#关键字的类/ etc的外部库(来自另一种语言),但我承认我从未遇到过这个问题。 它有助于C#允许您在覆盖/实现接口时重命名方法参数名称,以避免一组常见的情况。

另一种(可以说是懒惰的)用法是代码生成; 如果你总是用@theName为字段/变量/ etc添加前缀,那么你不必担心特殊情况。 就个人而言,我只是反复核对C#关键字/上下文关键字列表,并添加类似下划线的内容。

@符号的其他用法(逐字字符串文字)是@“更有用”。

我在asp.net MVC Views中使用它,你在那里使用HtmlHelper定义一个css类。

<%= Html.TextBox("Name", null, new { @class = "form-field" }) %>

我认为将保留关键字作为变量名称是一个坏主意。 恕我直言,它使代码可读性降低。 虽然在某些情况下它可能有用。 例如,在ASP.NET MVC视图中,您可以编写:

<%= Html.TextBox("name", new { @class = "some_css_class" }) %>

正如其他人所指出的那样,@ -quoting对字符串非常有用。 这里有些例子:

 // Not having to escape backslashes.
String a = @"C:\Windows\System32";

// Escaping quotes.
String b = @"The message is ""{0}"".";

// String with embedded newlines.
String c = @"An error occured.
Please try again later.
";

我只使用并看到它只与字符串一起使用,如:

string name=@"some funny name";

从来不知道这一点,但从你说的话我会避免它。

我在C#中唯一使用@的是预先格式化的字符串。

@"String\no\need\to\escape\slashes"

你可以安全地避免任何造成混乱的事情。 :-)

我使用@的唯一地方是字符串。

从MSDN:@ -quoting的优点是不处理转义序列,这使得它易于编写,例如,完全限定的文件名:

@"c:\\Docs\\Source\\a.txt" // rather than "c:\\\\Docs\\\\Source\\\\a.txt"

我避免使用它,除了使用扩展方法,我认为它有助于提高可读性:

public static void Foo(this object @this)
{
     Console.WriteLine(@this.ToString());
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM