interface
方法的訪問修飾符是什麼?它應該是public
或protected
,因爲您可以在實施它們時訪問它們(這是有道理的)。它也應該是abstract
,因爲它們沒有實現。但最近我一直在讀一本書,叫做CLR通過C#和大約接口章說以下我對C#接口成員的默認訪問修飾符感到困惑
的CLR要求
interface
方法被標記爲virtual
。如果您沒有在源代碼中明確標記該方法爲virtual
,則編譯器將該方法標記爲virtual
和sealed
。
當您標記interface
成員virtual
編譯器抱怨訪問修飾符無效。我的意思是沒有訪問修飾符對interface
中的任何內容都有效,而不是由編譯器賦予它們的默認值。任何人都可以爲我清楚嗎?
CLR的實現細節和C#語言的指定行爲之間有區別。並不是那麼令人驚訝。 CLR要求接口方法是虛擬的,但是您不要在C#中以這種方式聲明它們,因爲您無法在派生類中重寫它們。 –