8

C# に関する本を読んでいるときに、@ を使用して "オーバーロード" したり、C# キーワードを識別子として使用したりするコードに出くわしました。あいまいさにつながるため、これは良い習慣ではないと思います。私はこれを考えるのが正しいですか、それともこれを使用する必要がある場合がありますか?

4

8 に答える 8

18

実際、ほとんどの場合、これを避ける価値があります。それが役立つかもしれない主な有効な時間は、たまたまC#キーワードであるクラス/ etcを持つ外部ライブラリ(別の言語からの)を扱うときですが、実際にこの問題が発生したことはありません。C# では、インターフェイスをオーバーライド/実装するときにメソッド引数名の名前を変更できるため、よくある一連のケースを回避できます。

もう 1 つの (おそらく怠惰な) 用途は、コード生成です。フィールド / 変数 / などの前に常に @theName を付ければ、特殊なケースについて心配する必要はありません。個人的には、C# キーワード/コンテキスト キーワードのリストと照合して、アンダースコアなどを追加するだけです。

@ 記号の他の用途 (逐語的な文字列リテラル) は、@"はるかに便利" です。

于 2009-07-19T10:12:12.523 に答える
17

HtmlHelper を使用して css クラスを定義している asp.net MVC ビューで使用しました。

<%= Html.TextBox("Name", null, new { @class = "form-field" }) %>
于 2009-07-19T10:16:05.573 に答える
4

他の人が指摘しているように、@-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.
";
于 2009-07-19T10:36:15.033 に答える
4

変数名としてキーワードを予約するのは悪い考えだと思います。私見では、コードが読みにくくなります。役に立つ場合もありますが。たとえば、ASP.NET MVC ビューでは、次のように記述できます。

<%= Html.TextBox("name", new { @class = "some_css_class" }) %>
于 2009-07-19T10:16:43.760 に答える
1

次のように、文字列のみで使用されているだけで、使用されているのを見てきました。

string name=@"some funny name";
于 2009-07-19T10:12:22.070 に答える
1

これについては知らなかったが、あなたの言うことから、私はそれを避けるだろう.

C# で @ を使用するのは、書式設定済みの文字列のみです。

@"String\no\need\to\escape\slashes"
于 2009-07-19T10:13:47.463 に答える
1

混乱を招くものはすべて安全に回避できます。:-)

@ を使用する唯一の場所は文字列です。

MSDN より: @-quoting の利点は、エスケープ シーケンスが処理されないことです。これにより、完全修飾ファイル名などを簡単に記述できます。

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

于 2009-07-19T10:21:20.740 に答える
0

読みやすさに役立つと思われる拡張メソッドを除いて、私はそれを避けます。

public static void Foo(this object @this)
{
     Console.WriteLine(@this.ToString());
}
于 2009-07-19T10:17:17.130 に答える