簡體   English   中英

你可以在C#中繼承多少個類?

[英]How many classes can you inherit from in C#?

你可以在.NET中繼承多少個類?

有幾個后端C#文件,我想分享不同的靜態方法,但它們都在不同的類中。 有沒有辦法繼承多個類?

示例代碼將非常感激。

C#不支持多重繼承(意味着單個類繼承自多個類)。 但是,您可以在單個類中實現多個接口。

就將繼承的類鏈接在一起而言,本身沒有限制。 請記住您將為系統引入的復雜性。 使用繼承時,請確保在“是”方案中使用它。 cheeta是一種動物。 馬自達是一輛汽車。 否則,您的繼承會將您的類與設計變得更加難以維護。

如果它們是靜態“實用程序”方法,則只需直接調用它們而不繼承。 除非這些方法屬於您正在創建的實體,否則不應使用繼承。

您只能從單個類繼承。 然而,可以實現多個接口。

假設你有Utils.cs:

internal class Utils {
    public static void Log(string str) {
        // log str to a file...
    }
}

並且有一個DB.cs使用Log方法,並在與Utils類相同的命名空間中:

public class DB {
    public void SaveToDB() {
        // some db operations
        Utils.Log("DB operation successful");
    }
}

由於Log方法是靜態的,因此您無需初始化Utils類即可使用此方法。

作為結論,您不能使用多重繼承,但對於您的情況,您不需要這樣做。 您可以使用靜態方法而無需多重繼承。

你不能在C#中做多重繼承。

如果不是因為您想要共享靜態方法,則可以使用接口實現相同的目的。

您可以在“鏈”中繼承所需的多個類,但.NET語言不允許多重繼承。

您在.NET中進行多重繼承的唯一選擇是接口。

只要適當地設置了訪問器,靜態方法或多或少都是共享的(實際上,它們使用VB中的共享關鍵字); 它們與哪個類沒有區別,因為它們與任何實例化對象斷開連接。

要調用靜態方法,請在其前面加上聲明它的類的名稱:

MyClass.MyUtilityMethod();

訪問者必須是public或者如果調用者和方法在同一個項目/程序集中,它可以是internal的。

如果您的目標僅僅是為靜態方法創建單一訪問點,則可以創建一個根據需要轉發調用的類:

public static class SharedMethods
{
    public static void SharedMethod1()
    {
        ClassA.SharedMethod1();
    }

    public static string GetName()
    {
        return NameProvider.GetName();
    }

    public static int GetCount()
    {
        return CountClass.GetCount();
    }
}

這樣您就可以通過SharedMethods.GetName()等訪問所有內容。

在.NET中,您只能從一個基類繼承,但實現多個接口。

對於像您一樣的ASP.NET特定情況,您可以執行以下操作:

public class BasePage : Page
{
    public string SomeMethod() { //Magic happens here }
}

並讓您的webforms繼承自代碼隱藏中的BasePage。

另一個經常遵循的方法是創建一個自定義靜態類,其中包含所有靜態方法。 確保你使用ASP.NET特定的東西為它們添加HttpContext.Current前綴。

例如:

public static class HelperClass
{
    public static string GetUsernameFromSession()
    {
        return HttpContext.Current.Session["Username"].ToString();
    }
}

您不能從多個類繼承。 但是,您可以將彼此繼承的類串聯起來。

班級員工

班主任:員工

class RegionalDirector:Manager

因此,如果您的程序中有一個完整的命名/員工ID /聯系信息方案,您可以從員工繼承。 然后,詳細說明經理的信息,然后為區域主管提供更多信息。

暫無
暫無

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

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