簡體   English   中英

C#方法默認是密封的還是虛擬的?

[英]Is C# method sealed or virtual by default?

我知道virtual關鍵字和sealed關鍵字的定義,但是如果您不將它們與方法一起使用,則默認情況下可以覆蓋該方法嗎?

我來自vb.net背景。 在vb.net中(來自MSDN)如下所示:

如果未指定Overridable或NotOverridable修飾符,則默認設置取決於屬性或方法是否覆蓋基類屬性或方法。 如果屬性或方法覆蓋基類的屬性或方法,則默認設置為Overridable; 否則,它是不可覆蓋的。

我只想知道在C#中是否也是如此。

默認情況下,C#中的方法不是虛擬的。

不,它不能。 您需要將方法顯式標記為虛擬方法,以允許在派生類中重寫該方法。

但是,您可以做的是使用new關鍵字隱藏方法。 (MSDN文檔)

該密封關鍵字可用於類定義和方法。 它不允許從類繼承或方法的重寫。 默認情況下,如果您不使用此關鍵字,其他人將能夠從您的類繼承。 MSDN文檔

不。與Java不同,C#中的方法默認情況下不是virtual的。 它們都不是sealed ,但是您不能覆蓋它們,因為它們是常規方法。

不可以,您不能覆蓋非虛擬方法。 new關鍵字僅隱藏基類的實現,不是一個好習慣。

在這里與Anders Hejlsberg討論這個問題

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM