C# 要求在C语言中存在静态方法#

C# 要求在C语言中存在静态方法#,c#,generics,static,methods,constraints,C#,Generics,Static,Methods,Constraints,给定一组具有支持给定域逻辑的公共属性和方法集的对象,是否有方法在这些对象上强制存在某些静态方法 我已经得出结论,实现接口并不能实现这一点(方法只是实例),静态方法不能被标记为覆盖、虚拟或抽象 提前谢谢。不 (注意:在F#中,您可以使用“内联”函数和“^”类型(例如,对于所有类型T,T有一个返回“int”的静态方法ToInt(T))。编译器有效地将每个调用站点自动扩展到特定类型。)否 (注意:在F#中,您可以使用“内联”函数和“^”类型(例如,对于所有类型T,其中T有一个返回“int”的静态方法T

给定一组具有支持给定域逻辑的公共属性和方法集的对象,是否有方法在这些对象上强制存在某些静态方法

我已经得出结论,实现接口并不能实现这一点(方法只是实例),静态方法不能被标记为覆盖、虚拟或抽象

提前谢谢。

(注意:在F#中,您可以使用“内联”函数和“^”类型(例如,对于所有类型T,T有一个返回“int”的静态方法ToInt(T))。编译器有效地将每个调用站点自动扩展到特定类型。)


(注意:在F#中,您可以使用“内联”函数和“^”类型(例如,对于所有类型T,其中T有一个返回“int”的静态方法ToInt(T))。编译器有效地将每个调用站点自动扩展到特定类型。)

强制类型具有静态成员的唯一方法是从它继承。所有类型都将具有静态成员,如果需要在派生类型上重写它们,可以使用“new”关键字:


它与抽象/重写并不完全相同,但从使用者的角度来看,其工作原理类似。

强制类型具有静态成员的唯一方法是从它继承。所有类型都将具有静态成员,如果需要在派生类型上重写它们,可以使用“new”关键字:

它与抽象/重写并不完全相同,但从消费者的角度来看,它的工作原理类似

static void Main(string[] args)
{
    Console.WriteLine(Base.Hello());
    Console.WriteLine(Derived.Hello());
    Console.Read();
    /* output will be:
    Hello
    World
    */
}

public class Base
{
    public static object Hello()
    {
        return "Hello";
    }
}

public class Derived : Base
{
    public static new object Hello()
    {
        return "World";
    }
}