2012-06-14 21 views
2

我有我的應用程序一個utils的單元,截至目前,只有定義幾個枚舉,如:是否有一個隱藏的「使用」添加到C#類?

public enum MostFavoredStates 
{ 
    California, 
    NorthCarolina, 
    Vermont, 
    NewMexico 
} 

public enum LeastFavoredStates 
{ 
    NorthDakota, 
    Illinois, 
    Nebraska 
} 

public enum StatesInWhichIHaveResided 
{ 
     California, 
     NewYork, 
     Montana, 
    Alaska, 
     Oklahoma, 
     Wisconsin, 
     Idaho, 
     Missouri 
} 

當我在我的項目運行ReSharper的,它說我不需要「使用」全班在這個班上發表聲明;所以,我把它們都刪除了,瞧!它確實不需要任何東西。

「enum」必須在某個地方聲明 - 如何在沒有引用該程序集或名稱空間的情況下生活?如果每個班級都有「烘焙」的東西,那是什麼?

+0

爲什麼必須枚舉在某處聲明? –

+1

也許你把'enum'關鍵字和'System.Enum'類型混淆了?前者依賴後者,但你不輸入後者,所以你不需要任何「使用」。 – hvd

+1

我在這裏看到了國家歧視...... –

回答

12

「枚舉」必須聲明在某處 - 它如何能夠在不引用該程序集或名稱空間的情況下生存?如果每個班級都有「烘焙」的東西,那是什麼?

「枚舉」 是一個C#語言的關鍵字。它不是一個需要解決的框架類型,因爲它是語言本身的一部分。

請注意,有很多其他語言關鍵字是這種方式。例如,你可以使用int沒有使用子句using System;,因爲它的「烤成」語言作爲別名System.Int32 - 但你不能用Int32,因爲這是System.Int32

2

您在程序開始時從不需要任何using聲明;他們的整個存在是爲了方便。

您可以隨時爲每種類型的內聯使用完全限定的名稱,它將被解析。

System.Console.WriteLine(System.String.Empty); 

上面片斷編譯沒有任何using塊就好了。加入using System;的唯一好處是,它可以讓你縮短了上面的代碼:

Console.WriteLine(String.Empty); 

現在,由於時間類型的某些命名空間中給定的代碼文件中通常使用的數量,這往往是一個顯著改進,因此很少使用完全限定名稱。

類型別名(int,string,double,datetime等)映射到它們表示的完全限定名稱,而不僅僅是不合格的名稱,所以不存在對using System的依賴。

+0

好點,Servy。 –

0

其需要注意的是C#的類型,如int和string「中出爐」只是針對的.NET類型System.Int32和System.String的別名。

如果您使用int或字符串,您因此不需要使用System。

如果您要決定使用哪一種(在.NET類或C#別名)以下SO問題可能會有所幫助:

C#, int or Int32? Should I care?

相關問題