C#私有方法作为静态

C#私有方法作为静态,c#,static,private,C#,Static,Private,将私有方法声明为静态以及何时使用它有什么好处 我为什么要使用: private static string GetSomething() { return "Something"; } 而不是: private string GetSomething() { return "Something"; } 我是这么说的 对静态方法的调用生成Microsoft中间语言(MSIL)中的call指令,而对实例方法的调用生成

将私有方法声明为静态以及何时使用它有什么好处

我为什么要使用:

    private static string GetSomething()
    {
        return "Something";
    }
而不是:

    private string GetSomething()
    {
        return "Something";
    }
我是这么说的

对静态方法的调用生成Microsoft中间语言(MSIL)中的call指令,而对实例方法的调用生成callvirt指令,该指令还检查空对象引用。然而,在大多数情况下,两者之间的性能差异并不显著


用更简单的话来说,这意味着会有一些性能提升。

您可以声明一个私有静态方法,作为向其他开发人员发出此方法不使用实例数据的信号的一种方式。

考虑下面的一个简单设计,其中私有静态具有重要意义

您希望有一些数据隐藏(抽象)并希望在类的静态和非静态函数中使用这些数据:

考虑以下示例:

    public class test
    {
        private static int funcValue()
        {
            return 200;
        }
        public static void someStaticFunc()
        {
            int x = funcValue();
        }
        public void anotherNonStaticFunc()
        {
            int y = funcValue();
        }
    }
电话:

test t = new test();
test.someStaticFunc();//static
t.anotherNonStaticFunc();//non-static

在上面的示例中,如果不将
funcValue
声明为static,则不能在静态函数
someStaticFunc
中调用它,并且希望
funcValue
是私有的(抽象)。

来自google的第一个结果:第二个结果:第三个结果:提供一些上下文如何?这两个例子都是有效的,这取决于场景。访问器和静态修饰符是正交概念,因此
private
static
@dtb之间没有关系。这三个结果不能回答我的问题!我知道static是什么意思,但为什么我要将私有方法声明为static呢?我的类不是静态的,在我的类中可以使用私有静态方法的情况有哪些?@Stacked-你知道静态意味着什么,但你明白吗?静态基本上是指在类级别上。因此,对于类的每个实例都完全相同,并且不需要任何特定于实例的内容(如属性或其他内容的值)的每个方法都可以声明为静态的。-对于您的示例,该方法只返回一个字符串。每个实例都是相同的字符串,并且您不使用任何特定于实例的内容,因此可以将其声明为静态,以表明它没有绑定到实例。