黑马程序员技术交流社区

标题: 请问c#中属性和字段的区别是什么?自动属性又有什么区别? [打印本页]

作者: liuyj    时间: 2012-9-24 08:44
标题: 请问c#中属性和字段的区别是什么?自动属性又有什么区别?
请问c#中属性和字段的区别是什么?自动属性又有什么区别?
这几个概念到底如何定义的,希望能举例说明!
作者: 李阳Leo    时间: 2012-9-24 08:54
属性应该是面向对象中的一种概念

一个面向对象中的类,它的属性是有一定含义的,比如说,一个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进行赋值和取值
作者: 杨进    时间: 2012-9-24 09:19
  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.     }
复制代码

作者: 芦路    时间: 2012-9-24 10:32
成员变量和方法都是类的成员,成员变量也称为字段,成员方法实际上就是函数;
属性是类的一种特殊成员,既可以看做是成员变量,也可以看做是成员方法。
  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使用起来更方便,清晰




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