本帖最后由 王继光 于 2012-6-11 15:29 编辑
private int age是一个私有的 int类型,, 在new出一个实例的时候,程序将会给每个实例分配一段存贮 age 的空间. 可以这么说, age这个时候 属于 对象的.
private static int age 在它前面加了 static, 那么 程序只是在 类里面分配了一段公共的空间去存放age,这段空间是属于类的,, 我们new多个对象的时候, 如果在多个对象里面分别赋值, 然后再调用方法 打印出 age 的值, 会发现, age 的结果是 最后一个赋值的结果, 而不是 我们给对象分别赋值的不同结果.
例子::
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace 测试static
{
class Perseon
{
static int age;
public int Age
{
get { return age; }
set { age = value; }
}
string name;
public string Name
{
get { return name; }
}
public Perseon(string name)
{
this.name = name;
}
public void Show()
{
Console.WriteLine("我叫{0}, 我的年龄是:{1}", name, age);
}
}
class Program
{
static void Main(string[] args)
{
Perseon zs = new Perseon("张三");
zs.Age = 18;
Perseon ls = new Perseon("李四");
ls.Age = 16;
zs.Show();
ls.Show();
Console.ReadKey();
}
}
}
输出结果:
我叫张三, 我的年龄是:16
我叫李四, 我的年龄是:16
可以看出,, 张三 李四的 成绩都是 16,, 赋值的时候 其实在更改同一段内存里的数据
结论: 加 static 的 字段 是属于 类的 , 多个对象 共用这个字段,,,,
不加 static 的字段 是属于 对象的, new出 对象(实例) 的时候, 会分别给每个对象分配一段空间存贮不 加 static 的字段 |