什么是 C # 中的“静态方法”?

将 static 关键字添加到方法中意味着什么?

public static void doSomething(){
//Well, do something!
}

你能把 static关键字添加到类中吗? 那意味着什么呢?

265560 次浏览

与常规(例子)函数不同,static函数不与类的实例关联。

static类是一个只能包含 static成员的类,因此不能被实例化。

例如:

class SomeClass {
public int InstanceMethod() { return 1; }
public static int StaticMethod() { return 42; }
}

为了调用 InstanceMethod,您需要类的一个实例:

SomeClass instance = new SomeClass();
instance.InstanceMethod();   //Fine
instance.StaticMethod();     //Won't compile


SomeClass.InstanceMethod();  //Won't compile
SomeClass.StaticMethod();    //Fine

静态函数意味着它与类(不是类的特定实例,而是类本身)相关联,即使不存在类实例,也可以调用它。

静态类意味着类只包含静态成员。

静态关键字应用于类时,告诉编译器创建该类的单个实例。这样就不可能“新建”该类的一个或多个实例。静态类中的所有方法本身必须声明为静态的。

拥有非静态类的静态方法是可能的,而且通常是可取的。例如,当创建另一个类的实例时,工厂方法通常声明为静态的,因为这意味着不需要包含 factor 方法的类的特定实例。

有关如何、何时和何地的详细说明,请参阅 MSDN

静态变量不与类的对象链接。可以使用 classname 访问它。类的所有对象将共享静态变量。

通过将函数设置为静态,它将限制该函数对该文件的访问。

静态方法、字段、属性或事件可以在类上调用,即使没有创建类的实例。如果创建了类的任何实例,则不能使用它们访问静态成员。静态字段和事件只存在一个副本,静态方法和属性只能访问静态字段和静态事件。静态成员通常用于表示不随对象状态变化的数据或计算; 例如,数学库可能包含计算正弦和余弦的静态方法。 静态类成员在成员的返回类型之前使用 Static 关键字声明

简而言之,您不能实例化静态类: 例如:

static class myStaticClass
{
public static void someFunction()
{ /* */ }
}

你不能这样做:

myStaticClass msc = new myStaticClass();  // it will cause an error

你只能:

myStaticClass.someFunction();

从另一个角度来看: 假设您希望对单个 String 进行一些更改。 例如,你想使字母大写等等。 您可以为这些操作创建另一个名为“ Tools”的类。 创建“ Tools”类的实例没有任何意义,因为该类中没有任何类型的实体可用(与“ Person”或“師”类相比)。 那么 我们使用 static 关键字是为了使用“ Tools”类而不需要创建任何类的实例,当你在类名(“ Tools”)后面按下点时,你可以访问你想要的方法。

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;


namespace ConsoleApplication1
{
class Program
{
static void Main(string[] args)
{
Console.WriteLine(Tools.ToUpperCase("Behnoud Sherafati"));
Console.ReadKey();
}
}


public static class Tools
{
public static string ToUpperCase(string str)
{
return str.ToUpper();


}
}
}

当您向一个方法添加一个“ static”关键字时,这意味着底层实现为该类的任何实例提供相同的结果。 不用说,结果随着参数值的变化而变化

核心的 静电干扰关键字,您将只有一个副本的 RAM(方法/变量/类) 分享呼叫所有人