2010-05-12 21 views
8

Ben the source code of StyleCop gezen ediyorum ve meraklı bir şeyi buldum:C# sınıfındaki @ namespace alanı nedir?

/// <summary> 
/// The namespace that the rule is contained within. 
/// </summary> 
private string @namespace; 

// [...] 

internal Rule(string name, string @namespace, string checkId, string context, bool warning) : this(name, @namespace, checkId, context, warning, string.Empty, null, true, false) 
{ 
    Param.Ignore(name, @namespace, checkId, context, warning); 
} 

bu şey nedir? namespace anahtar kelimesi değil, bir alanın belirtmek için at işaretinin kullanıldığı basit bir alan mı? Bu durumda, en-işareti (örneğin, vb @dynamic, @using için) herhangi bir ayrılmış kelime için kullanılabilir?

+0

Sadece saklıdır kelimeler; * ile herhangi bir * tanımlayıcıyı başlatabilirsiniz. Niye ya? Çünkü * gelecekte hangi kelimelerin anahtar kelimeler olacağını bilmiyorsunuz *. Eğer paranoyaksanız ve bir gün içeriğe dayalı bir anahtar kelimeye "blah" yapacağımızdan korkuyorsanız, o zaman "int blah;" diyebilirsiniz. blah operatörünü eklediğimizde bile kodunuzun derlemeye devam edeceğinden emin olun. –

+0

Ayrıca, alanın adının "ad alanı" olduğunu unutmayın. @ Sadece derleyiciye "takip eden şeyin bir isim değil, bir anahtar kelime olduğunu" söyler. Aksi takdirde göz ardı edilir. –

cevap

4

Evet @ işareti onları değişken adı olarak kullanılmasına izin için ayrılmış kelimelerin önüne koymak olabilir.

var @dynamic = ... 
var @event = .... 

Aslında evet Bascially

6

this question itibaren, öğrendik ve başka şeyler. Değişken adının önüne bir @ işareti koymak, bu değişken adının bir anahtar kelime olması nedeniyle oluşan bir hatayı durdurur.

http://msdn.microsoft.com/en-us/library/x53a06bb(VS.71).aspx

+3

Bir alt çizgi (veya başka bir karakter) önüne koymanın farkı nedir? – adrianm

+2

@adrianm: '_namespace' adı '_namespace' olacak oysa buldum fark yansıma, kullanırken' FieldInfo.Name' 'eğer @ namespace' 'ad' olacağıdır. –

1

Evet, değişkenin first and only first karakter olarak @ kullanabilirsiniz.

0

Diğer kişilerin yanıtladığı gibi, tam olarak ön eklediğiniz sürece '@', ancak IMHO ile ayrılmış anahtar kelimeler kullanabilirsiniz, bu iyi bir geliştirme uygulaması değildir. Java "Olay" Bizim Java kaynak kodu may, ayrılmış bir sözcük değildir çünkü; doğrusu makine örneğin Çalıştığım şirkette, biz C# Java kodu dönüştüren bir araç var (kod oluşturulan yalnızca kullanmak istiyorum ihtiva tür tanımlayıcılar)

En

Adriano

1

tanımlayıcıları hedef dilde anahtar kelimeler örneğin olduklarını üretilebilir olarak bu teknik genellikle otomatik kod üretimi ile eşleştirildi Bir Xml şemasının C# sınıflarını üretmek için kod nesnesini çalıştırması durumunda, şemanın "event" adında bir özniteliği olabilir. Bu bir C# anahtar kelimedir, bu yüzden kod üreticisi "@event" i kullanabilir.

İlgili konular