Answers:
甲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
从另一个角度来看:考虑要对单个String进行一些更改。例如,您要将字母大写,等等。您为这些操作创建了另一个名为“工具”的类。制作“工具”类的实例没有任何意义,因为该类内部没有任何类型的实体(与“人”或“教师”类相比)。因此,为了使用“工具”类而不使用其任何实例,我们使用了静态关键字,当您在类名(“工具”)后按点时,便可以访问所需的方法。
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关键字应用于类时,它告诉编译器创建该类的单个实例。这样就不可能“新建”该类的一个或多个实例。静态类中的所有方法本身必须声明为静态。
具有非静态类的静态方法是可能的,而且通常是合乎需要的。例如,工厂方法在创建另一个类的实例时经常被声明为静态,因为这意味着不需要包含factor方法的类的特定实例。
有关如何,何时何地在何处的良好解释,请参见MSDN。
static
类根本没有实例。