[英]Can a method be abstract but not virtual?
據我了解,標記為抽象的方法是隱式虛擬的。 原因:假設給定對象的編譯時類型是抽象的。 如果正在調用對象的一個抽象方法,則要執行的實際方法是在對象的運行時類型中定義的方法。 不是嗎? 如果我是對的,那么抽象方法的行為就好像它也是虛擬的。
盡管如此,我已經成功地同時標記了一個抽象和虛擬的C#方法:
public abstract virtual void crazy();
我認為這意味着抽象方法不一定是虛擬的,而抽象方法實際上與虛擬方法正交。
我有什么問題? 抽象方法怎么不是虛擬的?
您不能將方法標記為abstract
和virtual
。 這將導致編譯器錯誤:
抽象方法'Namespace.Class.Foo()'不能標記為虛擬
你的問題的其余部分是正確的: abstract
方法是隱式virtual
。
來自MSDN
“您不能將virtual修飾符與static,abstract,private或override修飾符一起使用。”
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.