2012-02-01 12 views
5

@可能性の重複:
What's the use/meaning of the @ character in variable names in C#?
C# prefixing parameter names with @LINQの、ラムダと

私はこれを知っている必要がありますような気がして、私はGoogleにそれが不可能見つけます。以下 は、私が出会ったいくつかのLINQのコードからの抜粋です:

private static readonly Func<SomeEntities, someThing, List<someThing>> GetReplacement = 
(someEntities, thing) => someEntities.someReplacement.Join(someEntities.someThing, 
          replaces => replaces.new_thing_id, 
          newThing => newThing.thing_id, 
          (rep, newThing) => new {rep, newThing}).Where(
           @t => @t.rep.thing_id == thing.thing_id). 
Select 
(
    @t => @t.newThing 
).ToList().Distinct(new SomeThingComparer()).ToList(); 

「@」の接頭辞がこのコンテキストでは何を意味するのでしょうか?

答えて

14

あなたは、このような変数名として、識別子としてキーワードを使用する必要がある場合は通常、@接頭辞が使用されている:

string @string = "..."; 

C# specは、以下の(強調鉱山を)言う:

接頭辞「@」は、識別子としてのキーワードの使用を可能にします。これは、他のプログラミング言語とのインタフェースに役立ちます。文字@は実際には識別子の一部ではないため、識別子は他の言語では通常の識別子として、接頭辞なしで見られる場合があります。 @接頭辞を持つ識別子は、逐語識別子と呼ばれます。 キーワードではない識別子に@接頭辞を使用することはできますが、スタイルの問題として強く推奨されません。

tはキーワードではありませんので、私は@はあなたの例では削除されるべきであると言うだろう。

+0

ハ!私はそれが私が知っていたはずのものだと分かっていました。ありがとう! – Niklas

+0

@Jon Skeet::) .... –