A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 余晓亮 中级黑马   /  2012-5-4 16:01  /  2439 人查看  /  4 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

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中的解释看不太明白

评分

参与人数 1技术分 +2 收起 理由
宋天琪 + 2

查看全部评分

4 个回复

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

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

评分

参与人数 1技术分 +2 收起 理由
宋天琪 + 2

查看全部评分

回复 使用道具 举报
yuchen0418 发表于 2012-5-4 17:17
前者是两个静态字段和两个非静态属性,静态字段要用类名来访问:类名.name,非静态字段用对象名来访问:对象 ...

是不是可以这样理解:
在前者中,实例化了一个对象,并在对象中初始化Name或修改Name的值,Name的值就是修改后的值?再实例化新的对象中Name就是上次修改的值?
回复 使用道具 举报
余晓亮 发表于 2012-5-4 18:33
是不是可以这样理解:
在前者中,实例化了一个对象,并在对象中初始化Name或修改Name的值,Name的值就是 ...

是的,可以这么理解,你在vs中运行也会是这个结果
回复 使用道具 举报
public 关键字是类型和类型成员的访问修饰符,是允许的最高访问级别,对访问公共成员没有限制
static 修饰符声明属于类型本身而不是属于特定对象的静态成员。前者是两个静态字段被类中所有对象共享。

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


评分

参与人数 1技术分 +2 收起 理由
宋天琪 + 2

查看全部评分

回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马