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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

请问c#中属性和字段的区别是什么?自动属性又有什么区别?
这几个概念到底如何定义的,希望能举例说明!

评分

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

查看全部评分

3 个回复

倒序浏览
属性应该是面向对象中的一种概念

一个面向对象中的类,它的属性是有一定含义的,比如说,一个Person类
它可能有两个属性
一个是,string name;
一个是,int age;
名字,肯定是字符串,年龄,一般都是1-100的整数
但是用户使用这个类(或其他人调用这个类)的时候,可能不知道你这属性到底有什么逻辑关系,可能传年龄的时候,就传一个负数,这是我们不希望看到的

所以,有了属性这个概念

自动属性,就是自动生成以下代码(注意,上面的name,和age都是private,外部是无法访问的)
  1. public string Name{
  2.         get{
  3.            return name;
  4.         }
  5.         set{
  6.            //这其中可以做逻辑判断
  7.            name = value;
  8.         }
  9. }
  10. public int Age{
  11.         get{
  12.               return age
  13.         }
  14.         set{
  15.            //这其中可以做逻辑判断
  16.            age= value;
  17.         }

  18. }
复制代码
这样,Person类的对象,就可以通过Name和Age这两个属性,正确的对name和age进行赋值和取值

评分

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

查看全部评分

回复 使用道具 举报
  1. class Person
  2.     {
  3.         //字段就是类内部用来存储数据的
  4.         private string name;//私有字段

  5.         //定义一个变量,这个变量含有get或set方法,我们就叫做属性
  6.         //属性是类提供给外部调用字段时用的,可以使用 对象.属性 设置或读取一个值
  7.         public string Name
  8.         {
  9.             get { return name; }
  10.             set { name = value; }
  11.         }

  12.         public int age;//公有字段,公有字段可以随意访问和赋值
  13.     }
复制代码

评分

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

查看全部评分

回复 使用道具 举报
成员变量和方法都是类的成员,成员变量也称为字段,成员方法实际上就是函数;
属性是类的一种特殊成员,既可以看做是成员变量,也可以看做是成员方法。
  1. class A
  2. {
  3. private int x;   //私有成员变量
  4. public int attx   //定义属性
  5. {
  6. get   //可读
  7. {return x;}
  8. set   //可写
  9. {x=value;}
  10. }
  11. }
复制代码
自动属性是系统会自动地生成私有变量和默认的get/set 操作,不过get/set使用起来更方便,清晰

评分

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

查看全部评分

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