低级差异:使用静态方法的非静态类与使用静态方法的静态类

Den*_*sky 13 .net c# performance static-classes

我想知道使用静态类的静态类与使用相同静态方法的静态类的一般好处(或缺点),除了我不能使用非静态类的静态方法扩展方法.

例如:

class NonStaticClass
{
    public static string GetData()
    {
        return "This was invoked from a non-static class.";
    }
}
Run Code Online (Sandbox Code Playgroud)

对此:

static class StaticClass
{
    public static string GetData()
    {
        return "This was invoked from a static class.";
    }
}
Run Code Online (Sandbox Code Playgroud)

使用一种方法比另一种方法有什么性能/内存含义?

注意:假设我不需要实例化该类.我的用例场景仅限于以下内容:

Console.WriteLine(NonStaticClass.GetData());
Console.WriteLine(StaticClass.GetData());
Run Code Online (Sandbox Code Playgroud)

小智 16

主要的好处是,如果你使类静态,编译器将确保你的类只有静态成员.

因此,任何阅读代码的人都会立即看到该类无法实例化,并且没有与该类的任何实例一起考虑的交互.因为不可能有任何.

在clr级别,没有概念static.静态类是abstractsealed,它们有效地防止了继承和实例化.

至于性能,我认为编译器或运行时没有任何可能性来优化其中一个.

在这个例子中,我将集中精力向读者表达您的意图.您可以随时优化.