请帮忙看看有木有问题,特别是在静态和非静态的比较。
1 using System;
2
3 class MyClass
4 {
5
public int nsMember;
//非静态成员变量
6
public static int sMember;
//静态成员变量
7
8
public MyClass(int i, int j)
9
{ //成员的初始化
10
nsMember = i;
11
sMember = j;
12
}
13 }
14
15 class Test
16 {
17
static void Main()
18
{
19
MyClass mc1 = new MyClass(50, 100); //创建一个MyClass实例,并初始化.
20
21
Console.WriteLine(MyClass.sMember); //ok, sMember是MyClass类的静态成员,可以由类名直接引用. 此行输出100
22
Console.WriteLine(MyClass.nsMember);//出错!nsMember是非静态成员,不能由类名直接引用
23
Console.WriteLine(mc1.nsMember);
//ok, mc是一个已成功创建的对象,它拥有自己的非静态成员nsMember
24
//此行输出50;
25
MyClass mc2 = new MyClass(10, 20);
//创建一个新的实例,并初始化.
26
27
Console.WriteLine(MyClass.sMember);//ok,由于在mc2初始化时已更改sMember为20,而sMember为所有MyClass类对象所共享,
//故此行输出20.
29
Console.WriteLine(MyClass.nsMember);//同样出错!
30
31
Console.WriteLine(mc2.nsMember);
//ok, 此行输出10;
32
33
Console.WriteLine(mc1.nsMember);
//此行输出50,因为mc1和mc2的非静态成员nsMember是互相独立的
2
class MyClass
{
3
4
static void StaticFun()
5
{
6
nsMember += nsMember;
//出错!因为nsMember是非静态成员
7
sMember += sMember;
//ok,因为sMember是静态成员
8
}
9
10
void UStaticFun()
11
{
12
nsMember += nsMember;
//ok
13
sMember += sMember;
//ok
14
}
15 }