Лучшие практики для использования @ в C # - PullRequest
8 голосов
/ 19 июля 2009

Читая книгу по C #, я наткнулся на код, который использует @ для «перегрузки» или использует ключевое слово C # в качестве идентификатора.Я предполагаю, что это не очень хорошая практика, так как это приводит к двусмысленности.Правильно ли я думаю об этом или есть моменты, когда это следует использовать?

Ответы [ 8 ]

18 голосов
/ 19 июля 2009

Действительно, почти всегда стоит избегать этого. Основное допустимое время, когда это может быть полезно, - это когда вы работаете с внешней библиотекой (из другого языка), у которой есть класс / etc, который является ключевым словом C #, но я признаю, что никогда не было этой проблемы в реальности. Помогает то, что C # позволяет переименовывать имена аргументов метода при переопределении / реализации интерфейсов, что позволяет избежать одного общего набора случаев.

Другое (возможно, ленивое) использование - это генерация кода; если вы всегда ставите префикс полей / переменных / и т. д. @theName, вам не нужно беспокоиться об особых случаях. Лично я просто сверяюсь со списком ключевых слов / контекстных ключевых слов C # и добавляю что-то вроде подчеркивания.

Другое использование символа @ (дословные строковые литералы) - это @ "гораздо полезнее".

17 голосов
/ 19 июля 2009

Я использовал его в asp.net MVC Views, где вы определяете класс css с помощью HtmlHelper.

<%= Html.TextBox("Name", null, new { @class = "form-field" }) %>
4 голосов
/ 19 июля 2009

Как уже отмечали другие, @-цитирование может быть очень полезным для строк. Вот несколько примеров:

 // 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.
";
4 голосов
/ 19 июля 2009

Я считаю плохой идеей зарезервировать ключевые слова в качестве имен переменных. ИМХО это делает код менее читабельным. Хотя в некоторых случаях это может быть полезно. Например, в ASP.NET MVC View вы можете написать:

<%= Html.TextBox("name", new { @class = "some_css_class" }) %>
1 голос
/ 19 июля 2009

Вы можете безопасно избегать всего, что создает путаницу. : -)

Единственное место, где я использую @, это строки.

Из MSDN: Преимущество @ -цитирования в том, что escape-последовательности не обрабатываются, что облегчает написание, например, полного имени файла:

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

1 голос
/ 19 июля 2009

Никогда не знал об этом, но из того, что вы говорите, я бы этого избегал.

Единственный раз, когда я использую @ в C #, это для предварительно отформатированных строк.

@"String\no\need\to\escape\slashes"
1 голос
/ 19 июля 2009

Я только использовал и видел, что он используется только со строками, как:

string name=@"some funny name";
0 голосов
/ 19 июля 2009

Я избегаю этого, за исключением методов расширения, где я думаю, что это помогает читабельности:

public static void Foo(this object @this)
{
     Console.WriteLine(@this.ToString());
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...