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-你知道静态意味着什么,但你明白吗?静态基本上是指在类级别上。因此,对于类的每个实例都完全相同,并且不需要任何特定于实例的内容(如属性或其他内容的值)的每个方法都可以声明为静态的。-对于您的示例,该方法只返回一个字符串。每个实例都是相同的字符串,并且您不使用任何特定于实例的内容,因此可以将其声明为静态,以表明它没有绑定到实例。