C#的静态方法与静态成员(转)

using System;
class Test
{
int x;
static y;
void F(){
    x=1;  //正确, 等价于this.x=1
    y=1;  //正确, 等价于Test.y=1
}

static void G(){
    x=1;  //错误, 不能访问this.x
    y=1;  //正确, 等价于Test.y=1
}

static void Main(){
    Test t=new Test();
    t.x=1;  //正确
    t.y=1;  //错误, 不能在类的实例中访问类的静态成员
    Test.x=1;  //错误, 不能按类访问非静态成员
    Test.y=1;  //正确
}
}

类的非静态成员属于类的实例所有, 每创建一个类的实例, 都在内存中为非静态成员开辟了一个区域; 而类的静态成员为类所有, 为这个类的所有实例所共享. 无论这个类创建了多少个副本, 一个静态成员在内存中只占一个区域.

类的静态方法是属于类的,是在定义类的时候就初始化好的方法了,调用的时候要通过类名.静态方法来调用。动态方法是在对象初始化的时候初始化的,只有通过实例话成功的对象才能调用,调用方法可以是 对象名.动态方法。

原文地址:https://www.cnblogs.com/liuzhengliang/p/1301883.html