黑马程序员技术交流社区

标题: 关于字段的关键字修饰符 [打印本页]

作者: 余晓亮    时间: 2012-5-4 16:01
标题: 关于字段的关键字修饰符
public static string name;
        public string Name
        {
            get { return name; }
            set { name = value; }
        }
        public static int id;
        public int Id
        {
            get { return id; }
            set { id = value; }
        }

private string name;
        public string Name
        {
            get { return name; }
            set { name = value; }
        }
        private int id;
        public int Id
        {
            get { return id; }
            set { id = value; }
        }
这两者有什么区别?msdn中的解释看不太明白

作者: yuchen0418    时间: 2012-5-4 17:17
前者是两个静态字段和两个非静态属性,静态字段要用类名来访问:类名.name,非静态字段用对象名来访问:对象名.Name。
静态成员被类的所有对象共享,你实例化了一个对象,并在对象中初始化Name或修改Name的值,那么类的静态字段name就会发生变化。

后者就是用属性封装字段,来控制对字段的读、写操作。

作者: 余晓亮    时间: 2012-5-4 18:33
yuchen0418 发表于 2012-5-4 17:17
前者是两个静态字段和两个非静态属性,静态字段要用类名来访问:类名.name,非静态字段用对象名来访问:对象 ...

是不是可以这样理解:
在前者中,实例化了一个对象,并在对象中初始化Name或修改Name的值,Name的值就是修改后的值?再实例化新的对象中Name就是上次修改的值?
作者: yuchen0418    时间: 2012-5-4 19:59
余晓亮 发表于 2012-5-4 18:33
是不是可以这样理解:
在前者中,实例化了一个对象,并在对象中初始化Name或修改Name的值,Name的值就是 ...

是的,可以这么理解,你在vs中运行也会是这个结果
作者: 张娜    时间: 2012-5-8 19:29
public 关键字是类型和类型成员的访问修饰符,是允许的最高访问级别,对访问公共成员没有限制
static 修饰符声明属于类型本身而不是属于特定对象的静态成员。前者是两个静态字段被类中所有对象共享。

private 关键字是一个成员访问修饰符,是允许的最低访问级别,只有在声明它们的类和结构体中才是可访问的。后者只能在本类中使用。







欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2