什么是C#中的“静态方法”?
将static关键字添加到方法时,这意味着什么?
public static void doSomething(){ //Well, do something! }
你可以添加static
关键字类? 那意味着什么呢?
与常规( 实例 )函数不同, 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
从另一个angular度来看:考虑你想对单个string进行一些修改。 例如,你想使字母大写,等等。 您为这些操作创build另一个名为“工具”的类。 “工具”类的实例是没有意义的,因为在类中没有任何types的实体(与“人”或“教师”类相比)。 所以我们使用静态关键字来使用“工具”类,而不用做任何实例,当你在类名(“工具”)后按下点时,你可以访问你想要的方法。
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(); } } }
即使没有创build类的实例,也可以在类上调用静态方法,字段,属性或事件。 如果创build了类的任何实例,则不能使用它们来访问静态成员。 静态字段和事件只存在一个副本,静态方法和属性只能访问静态字段和静态事件。 静态成员通常用于表示不响应对象状态而改变的数据或计算; 例如,math库可能包含用于计算正弦和余弦的静态方法。 静态类成员在元素的返回types之前使用static关键字声明
静态函数意味着它与类关联(不是类的特定实例,而是类本身),即使没有类实例存在,它也可以被调用。
静态类意味着类只包含静态成员。
不久,你不能实例化静态类:例如:
static class myStaticClass { public static void someFunction() { /* */ } }
你不能这样做:
myStaticClass msc = new myStaticClass(); // it will cause an error
你只能做:
myStaticClass.someFunction();
当你为一个方法添加一个“static”关键字时,这意味着底层实现给这个类的任何实例提供了相同的结果。 不用说,结果随着参数值的变化而变化
静态variables不与类的对象链接。 它可以使用classname来访问。 该类的所有对象将共享静态variables。
通过将函数设置为静态,它将限制该函数在该文件中的访问。
static关键字在应用于类时告诉编译器创build该类的单个实例。 然后不可能“新”一个或多个类的实例。 静态类中的所有方法都必须声明为静态的。
有可能,也经常希望有一个非静态类的静态方法。 例如,创build另一个类的实例时的工厂方法通常被声明为静态的,因为这意味着包含因子方法的类的特定实例不是必需的。
有关MSDN如何,何时何地的详细说明