2008-09-02 38 views
6

爲什麼Visual Studio在C#中將新類聲明爲私有類?我幾乎總是把它們交給公衆,我是瘋了嗎?VS.NET默認爲私有類

+0

實際上,類,結構或接口的默認訪問級別是內部的,而不是私有的。 `如果沒有指定訪問修飾符,Internal是默認值`,`就像類和結構,接口默認爲內部訪問`發件人:[MSDN](http://msdn.microsoft.com/zh-cn/library/ms173121。 aspx) – sliderhouserules 2014-11-07 23:54:38

回答

8

默認情況下,私有訪問看起來像是C#語言說明符部分的合理設計選擇。

一個好的通用設計原則是儘可能地限制所有訪問級別,以最小化依賴關係。如果開始儘可能地限制訪問級別,並且讓開發人員採取一些措施以使課程或成員更加可見,那麼您不太可能會遇到錯誤的訪問級別。如果某些東西比你需要的更少公開,那麼當你遇到編譯錯誤時,這種情況會立即顯現出來,但是找到比本應該更明顯的東西並不容易。

-1

C++(派生C#)指定默認的類訪問級別是私有的。 C#可以帶來這種進步,無論好壞。

+0

默認是內部的,而不是私有的。 http://msdn.microsoft.com/en-us/library/ms173121.aspx – sliderhouserules 2014-11-07 23:56:14

0

不,我總是要在班級的前面拍這個「公共」關鍵詞,所以你並不孤單。我猜模板設計者認爲從非常基礎開始是個好主意。你可以在你的Visual Studio安裝中編輯這些模板,如果它真的讓你感到惱火,但我還沒有到那個地步。

16

我不知道爲什麼這樣做,但在這裏就是你爲了獲得Visual Studio中默認創建類爲公共做什麼:

去到「程序Files \ Microsoft Visual Studio的9.0 \ Common7 \ IDE \的ItemTemplate \ CSHARP \代碼\ 1033「,你會發現一個名爲Class.zip文件,.zip文件內打開名爲Class.cs文件,該文件的內容是這樣的:

using System; 
using System.Collections.Generic; 
$if$ ($targetframeworkversion$ == 3.5)using System.Linq; 
$endif$using System.Text; 

namespace $rootnamespace$ 
{ 
    class $safeitemrootname$ 
    { 
    } 
} 

您只需在課程名稱前添加「Public」即可。結果應該是這樣的:

using System; 
using System.Collections.Generic; 
$if$ ($targetframeworkversion$ == 3.5)using System.Linq; 
$endif$using System.Text; 

namespace $rootnamespace$ 
{ 
    public class $safeitemrootname$ 
    { 
    } 
} 

一個你需要做的最後一件事是所有的模板Visual Studio是在使用沖洗,並讓他重新加載它們。對此的命令是(需要一段時間如此堅持):

devenv /installvstemplates 

而就是這樣,默認情況下不再有私人類。當然你也可以添加內部或任何你想要的。

Source

+0

哇,正是我所期待的! – 2008-11-03 14:21:52

-2

出於安全原因。

你想暴露某些方法,而不是你的整個類。

0

即使您將某個類標記爲公開,但默認情況下成員仍然是私有的。換句話說,這個類在同一個命名空間之外幾乎沒有用處。不過,我認爲默認情況下將其公開爲公開可能會過分。嘗試使用'內部'一些。它應該爲提供足夠的訪問權限,用於大多數的目的。

相關問題