- 访问方式:静态成员可以通过类名直接访问,而非静态成员需要通过类的实例来访问。
- 存储位置:静态成员存储在静态数据区,而非静态成员存储在堆栈或堆中,具体取决于它们所属的对象。
- 生命周期:静态成员在程序运行期间只有一份拷贝,而非静态成员每个对象都有一份拷贝。静态成员在程序启动时被初始化,在程序结束时被销毁,而非静态成员的生命周期与对象的创建和销毁相关。
- 共享性:静态成员是类的所有实例共享的,可以用于保存全局状态或者共享数据。非静态成员是每个对象独有的,每个对象都有自己的一份。
- 访问权限:静态成员可以访问类的所有成员,包括私有成员。非静态成员只能访问类的非静态成员。
下面是一个示例代码,演示了静态成员和非静态成员的使用:
public class MyClass
{
public static int staticField; // 静态字段
public int nonStaticField; // 非静态字段
public static void StaticMethod()
{
Console.WriteLine("这是一个静态方法");
}
public void NonStaticMethod()
{
Console.WriteLine("这是一个非静态方法");
}
}
public class Program
{
public static void Main(string[] args)
{
MyClass.staticField = 10; // 访问静态字段
Console.WriteLine(MyClass.staticField);
MyClass obj1 = new MyClass();
obj1.nonStaticField = 20; // 访问非静态字段
Console.WriteLine(obj1.nonStaticField);
MyClass obj2 = new MyClass();
obj2.nonStaticField = 30;
Console.WriteLine(obj2.nonStaticField);
MyClass.StaticMethod(); // 调用静态方法
obj1.NonStaticMethod(); // 调用非静态方法
obj2.NonStaticMethod();
}
}
10
20
30
这是一个静态方法
这是一个非静态方法
这是一个非静态方法


被折叠的 条评论
为什么被折叠?



