你可以在C#中继承多少个类?

loc*_*boy 23 .net c# asp.net

你可以在.NET中继承多少个类?

有几个后端C#文件我想分享不同的静态方法,但它们都在不同的类中.有没有办法继承多个类?

示例代码将非常感激.

Jor*_*mer 34

C#不支持多重继承(意味着单个类继承自多个类).但是,您可以在单个类中实现多个接口.

就将继承的类链接在一起而言,本身没有限制.请记住您将为系统引入的复杂性.使用继承时,请确保在"是"方案中使用它.cheeta是一种动物.马自达是一辆汽车.否则,您的继承会将您的类与设计变得更加难以维护.

如果它们是静态"实用程序"方法,则只需直接调用它们而不继承.除非这些方法属于您正在创建的实体,否则不应使用继承.

  • 在这种情况下,只需在使用它的类中执行StaticClassName.StaticMethodName(...).您不需要继承此方案.一个简单的电话就可以了.继承只应用于创建父类的更"专用"类型的新类 - 不授予对客户端类之外的方法的访问权限. (5认同)

Tom*_*ort 15

您只能从单个类继承.然而,可以实现多个接口.

  • 问题是:有没有办法继承多个类?虽然我没有提供解决方案,但我正确回答了这个问题. (4认同)
  • 虽然这是正确的,但我认为实际上并没有回答cfarm54提出的问题. (2认同)

Zaf*_*fer 9

假设你有Utils.cs:

internal class Utils {
    public static void Log(string str) {
        // log str to a file...
    }
}
Run Code Online (Sandbox Code Playgroud)

并且有一个DB.cs使用Log方法,并在与Utils类相同的命名空间中:

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

由于Log方法是静态的,因此您无需初始化Utils类即可使用此方法.

作为结论,您不能使用多重继承,但对于您的情况,您不需要这样做.您可以使用静态方法而无需多重继承.


Chr*_*isF 7

你不能在C#中做多重继承.

如果不是因为您想要共享静态方法,则可以使用接口实现相同的目的.

  • (-1)"你可以使用接口实现相同的目的." 假.用户明确表示他希望"共享单独的静态方法".接口不能达到同样的目的.我不支持多重继承,我只是说你的陈述是错误的. (2认同)