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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 小王 中级黑马   /  2014-2-8 14:02  /  1424 人查看  /  6 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 小王 于 2014-2-8 17:44 编辑

字段和属性的本质区别是什么?

评分

参与人数 1技术分 +1 收起 理由
卖火柴 + 1 很给力!

查看全部评分

6 个回复

倒序浏览
本帖最后由 Darkhorse′Xa 于 2014-2-8 15:13 编辑

字段的封装就是属性.
属性用于限制调用者赋值一些非正常数据,可以限制输入.当然直接给字段赋值也是可以的,属性拥有的get,set访问器可以帮我们控制值,并且获取值!而字段是做不到的,赋值给什么值就接受什么值,无法控制输入值是否为正常数据

评分

参与人数 1技术分 +1 收起 理由
电脑大牛 + 1

查看全部评分

回复 使用道具 举报 1 0
上楼说的挺好,我再说一个区别,属性本身不存储数据,而数据存储在其对应的的私有字段中。

评分

参与人数 1技术分 +1 收起 理由
电脑大牛 + 1 赞一个!

查看全部评分

回复 使用道具 举报
字段就是该类下储存的私有变量,属性就是对一个字段或者变量进行保护,属性分为可读,可写(这个一般很少出现)或者可读写。
在CSDN下载去有个C#入门经典视频教程,其中第三课就是对属性的描述。

评分

参与人数 1黑马币 +3 收起 理由
电脑大牛 + 3 很给力!

查看全部评分

回复 使用道具 举报
以前没有属性这个说法的.后来引入属性是因为在很多时候直接使用字段不安全.然后属性可以控制是否
  1. class Test
  2.     {
  3.         //private关键字的意思就是说这个下面的变量是"不能够"被别的类访问的
  4.         //那么为了保护这个变量,如果需要被外部读取,或者只是改变的话,这样使用属性来进行保护下改变.
  5.         //首先我们定义这样一个private变量
  6.         private int i = 1234;
  7.         //然后这个变量只能被读取,不会被赋值.使用属性来进行传值.这样这个变量就不会直接暴露在用户面前.并且不会被改变.
  8.         public int age
  9.         {
  10.             //使用get让外面读取这个属性,以为这个属性是在这个类的内部,所有可以访问这个私有变量.
  11.             //当访问这个属性的时候,就返回i的值
  12.             get
  13.             {
  14.                 return i;
  15.             }
  16.             //使用set可以改变这个变量的值.
  17.             set
  18.             {
  19.                 i = value;
  20.                 Console.WriteLine("使用属性改变了i的值:"+i.ToString());
  21.             }
  22.             
  23.         }
  24.     }
  25.     class Program
  26.     {
  27.         static void Main(string[] args)
  28.         {
  29.             //首先将这个类实例化一个对象
  30.             Test test = new Test();
  31.             //然后将这个属性打印出来,这个时候看清楚了,我们读取的是这个属性,不是这个变量,私有变量在类外面是不应该被访问也是不可能被访问的.
  32.             Console.WriteLine("取得的值是:"+test.age.ToString());
  33.             //如下写法就是错误的,编译就会报错
  34.             //Console.WriteLine(test.i);
  35.             Console.ReadKey();
  36.         }
  37.     }
复制代码

评分

参与人数 1技术分 +2 收起 理由
电脑大牛 + 2 很给力!

查看全部评分

回复 使用道具 举报
恩,好的,理解了,谢谢给位大侠们哈
回复 使用道具 举报
属性是为了保护字段的,比如人的年龄不能为复数,人是一个类,年龄就是字段,字段封装就是属性了,这个属性可以有get和set,也就是可读可写,写的时候可以通过属性来验证年龄值的有效性。因为年龄必须大于0。要注意的是属性不是用来存储数据的。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马