2010-10-15 44 views
4

我正在爲我的App類中正在進行的WPF應用程序添加一些可綁定的CLR屬性,並且由於此不一致的可訪問性錯誤而無法編譯。類定義中的「不一致的可訪問性」

可訪問性不一致:房產類型「SomeProj.Error」比財產較少訪問「SomeProj.App.LatestError」

要修正這個錯誤,我不得不改變class Errorpublic class Error

在VB中,類被認爲是公開的,大多數時候省略了訪問修飾符。 C#中也不是這樣嗎?

我只是最近做了vb-> c#跳轉,在語法中這樣的細微差別讓我放慢了腳步。

回答

0

雖然它通常被認爲是很好的做法,在所有訪問修飾符明確的,這是沒有道理的,讓他們用某種默認的省略

當然這一點。默認是明智的,如果默認是公開的,並且使用不當,那麼就沒有辦法靜態地確定它是一個錯誤(除非它暴露了其他地方定義的類型更少訪問),代碼可能會持續數月或在有人發現這個缺陷之前的幾年,然後修復它將是對組件的一個突破性改變。

因爲在所有其他情況下,缺省值是私有的,所以如果這是一個錯誤,那麼會導致編譯器錯誤(因爲某些東西需要它具有更大的訪問權限),這很容易被捕獲,或者在類中簡單地對其他程序集不可見(很容易被捕獲,特別是對於大多數IDE)。

因此限制違約是最明顯的方法。

4

不知道VB的,但在C#類defaultly有限制性修飾儘可能,這意味着 - 他們是internal,除非它們嵌套在另一個類中 - 在這種情況下,他們是private

這裏有一個complete guide( - :