2012-09-18 99 views
0

當添加一個新類到一個命名空間,這是我所得到的(這是在MVC3項目)爲什麼類似的名稱空間類不使用指令共享?

using System; 
using System.Collections.Generic; 
using System.Linq; 
using System.Web; 

namespace Foo.Models 
{ 
public class Bar 
{ 
} 
} 

在命名空間Foo.Models還有其他類。但是,通過將內容放置在不同的.cs位置來分離內容很好。我認爲這是相當標準的。無論如何,我知道編譯器可以發揮它的魔力。這是我的問題出現的地方。如果名稱空間稍後組成,那麼爲什麼總是需要重新定義該類正在使用的內容?如果它已經可以在某個地方的命名空間,那麼它應該是必要說在每一個.cs文件中定義的命名空間內一類using System;?有人可以爲我解釋這一點,也可能闡明瞭一種可能的方式來實現這一點,我以一種方式定義名稱空間的所有用例,然後添加到該名稱空間的任何類本質上都有權訪問那些。

回答

3

using語句被限定在特定的.cs文件,你正在使用。

他們只是提供該類文件,允許您使用的類的名稱而已,而不是到處都使用它們完全限定類名稱的情況下方便快捷。

命名空間的存在,因爲不同的球隊將不可避免地使用不同類別相同的類名(我不知道有多少的Util類是如何在那裏)。

你可能在你的項目中的兩個不同的類,要使用不同的對象具有相同的名稱。在每個文件中具有不同using語句的功能可以讓您方便地執行此操作。

請注意,您可以隨時編輯該模板的新類預填充你所有的類都需要的using聲明。

+0

實際上它們的作用域是命名空間,文件的行爲像一個特殊的命名空間(global::) –

+0

可伸縮性,好點:) –

+0

@HenkHolterman:幫我理解你的評論。如果我在.cs文件的頂部使用* using *語句,那麼* using *語句將影響該文件的類名解析。我不遵循你所說的話。 –

相關問題