静态方法
如果将类的某个成员声明为static,则该成员是静态成员,否则为实例成员。类的静态成员变量属于类,不必产生类的实例就可以直接访问它,静态成员在内存中只占有一块区域,为类的所有实例共享;类的实例成员属于类的实例所有,没创建一个类的实例,都在内存中为实例成员分配一个区域。
(1)系统定义的类中的静态方法
.NET提供了很多种类,比如:Console类,Datetime类,Math类等,每一种类都定义了相应的静态方法,用户可以直接调用
格式:类名.静态方法名([参数]);
例:
public class Program
{
static void Main(string[] args)
{
Console.WriteLine(Math.Max(2,3));//比较大小
Console.WriteLine(Math.Pow(2,3));//幂方法
Console.WriteLine(Math.Sqrt(4));//开方
Console.WriteLine(Math.Abs(-3));//绝对值
}
}
(2)自定义的类中的静态方法
在实际应用中,当类的方法所引用或操作的信息是关于类而不是类的实例时,就应定义为静态方法,使用static关键字来标识。
例:演示静态和非静态成员
class Test
{
private int x;
static private int y; //静态字段
public void Fn() //非静态方法
{
x = 1;// 相当于this.x = 1
y = 1;// 相当于Test.y = 1
Console.WriteLine("x = {0}; y={1}", x, y);
}
public static void Gn() //静态方法
{
//x = 2;//错误, 静态方法不能访问非静态成员x
y = 2;
Console.WriteLine("y={0}", y);
}
static void Main(string[] args)
{
Test t = new Test();
t.Fn();
Test.Gn();
t.x = 2;//正确
//t.y = 1;//错误, 不能通过实例访问静态成员
//Test.x = 1;//错误, 不能通过类名访问实例成员
Test.y = 2; //正确
Console.WriteLine("x = {0}; y={1}", t.x, Test.y);
Console.ReadLine();
}
}