簡體   English   中英

C#等效於Delphi的“類”函數/過程

[英]C# Equivalent of Delphi's “class” function / procedure

我已經進行了一些搜索,但似乎無法找到與此問題完全匹配的內容。 如果我錯過了,請重定向我。

在Delphi / Object Pascal中,您有兩個概念:

  1. 類方法-允許您在不需要類實例的情況下調用該方法。 但是,這些方法仍允許在派生類中進行重寫(因此以某種方式仍攜帶某些類信息)。
  2. 靜態方法-將方法標記為靜態-因此不再允許使用虛擬/替代關鍵字-沒有類信息/沒有繼承“知識”

*您可以在上述情況下糾正我。

問題:在C#中等效於Delphi的類方法(非靜態)? 我希望能夠聲明一個無需類實例即可調用的方法- 我希望能夠將基本方法標記為虛方法並在派生類中重寫它。

類方法-允許您在不需要類實例的情況下調用該方法 但是,這些方法仍允許在派生類中進行重寫 (因此以某種方式仍攜帶某些類信息)。

你確定嗎?

無論如何,我們擁有的最接近的東西是帶有靜態方法的類。

public class MyLovelyHorse
{
    public static int HowManyLegs()
    {
        return 4;
    }
}

但我希望能夠將基本方法標記為虛擬方法並在派生類中覆蓋它

對不起,沒有辦法。 C#中沒有工具可以執行此操作。

這是您可能應該瀏覽類和結構的時間(C#編程指南)

在C#中無法做到這一點-思想是靜態方法總是針對特定類型調用的,永遠不會有實例。 這是不正確的,因為您可以將派生類的類型信息傳遞給采用基本類類型的函數...

如果函數不應該做任何花哨的事情(例如,它只是返回一個靜態值),則可以使用類屬性而不是虛擬靜態方法來擺脫困境。

Delphi和C#有一些相似之處。 它們都不支持多重繼承。

遇到問題時,對於打算隱藏基類的方法實現的方法,可以使用new關鍵字。

Delphi中的static與C#的工作方式相同。 您不能覆蓋靜態方法。 如果您希望強制執行相同的操作,則C#還附帶了static(密封)(對於類)關鍵字。

暫無
暫無

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

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