Mos*_*she 172 c# methods static
将static关键字添加到方法时意味着什么?
public static void doSomething(){
//Well, do something!
}
Run Code Online (Sandbox Code Playgroud)
你能把static
关键字添加到课堂吗?那意味着什么?
SLa*_*aks 303
甲static
功能,不像常规的(例如)函数,不与类的实例相关联.
甲static
类是一类只能包含static
成员,并且因此不能被实例化.
例如:
class SomeClass {
public int InstanceMethod() { return 1; }
public static int StaticMethod() { return 42; }
}
Run Code Online (Sandbox Code Playgroud)
要调用InstanceMethod
,您需要一个类的实例:
SomeClass instance = new SomeClass();
instance.InstanceMethod(); //Fine
instance.StaticMethod(); //Won't compile
SomeClass.InstanceMethod(); //Won't compile
SomeClass.StaticMethod(); //Fine
Run Code Online (Sandbox Code Playgroud)
Beh*_*ati 26
从另一个角度来看:考虑您想对单个String进行一些更改.例如,你想使字母大写,等等.为这些操作创建另一个名为"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();
}
}
}
Run Code Online (Sandbox Code Playgroud)
Alb*_*orz 13
即使没有创建类的实例,静态方法,字段,属性或事件也可在类上调用.如果创建了类的任何实例,则不能使用它们来访问静态成员.只存在静态字段和事件的一个副本,静态方法和属性只能访问静态字段和静态事件.静态成员通常用于表示不响应对象状态而改变的数据或计算; 例如,数学库可能包含用于计算正弦和余弦的静态方法.静态类成员在membe的返回类型之前使用static关键字声明
不久,您无法实例化静态类:例如:
static class myStaticClass
{
public static void someFunction()
{ /* */ }
}
Run Code Online (Sandbox Code Playgroud)
您不能这样:
myStaticClass msc = new myStaticClass(); // it will cause an error
Run Code Online (Sandbox Code Playgroud)
您只能进行:
myStaticClass.someFunction();
Run Code Online (Sandbox Code Playgroud)