我瀏覽the source code of StyleCop,我發現了一個奇怪的事情:什麼是C#類中的@namespace字段?
/// <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);
}
這是什麼東西?它只是一個簡單的字段,其中at-sign用於指示它是一個字段,而不是namespace
關鍵字?如果是這樣,可以使用任何保留字(例如@dynamic
,@using
等)?
不僅保留字;您可以使用@開始*任何*標識符。爲什麼?因爲*你不知道將來哪些詞將成爲關鍵詞*。如果你是偏執狂,擔心有一天我們會對某個上下文關鍵詞進行「誹謗」,那麼你可以說「int @blah;」並確保即使添加了blah運算符,您的代碼仍將繼續編譯。 – 2010-05-12 14:17:41
還要注意,該字段的名稱是「名稱空間」,而不是「@namespace」。 @僅僅告訴編譯器「後面的東西是名稱,而不是關鍵字」。否則將被忽略。 – 2010-05-12 14:19:05