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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© FrancisTan 中级黑马   /  2014-7-7 14:08  /  1012 人查看  /  2 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 FrancisTan 于 2014-7-9 08:03 编辑

在前面我自己写的第一个类中,我就迫不及待地用到了属性这个
在我现在看来比较高级,让我用一次就特有成就感的玩意儿。
但是,就像我提的问题一样,我甚至不知道在构造函数中到底是
对字段直接赋值好呢,还是通过属性给它们赋值?

今天看视频终于看到老师讲属性及字段了,才搞清楚它们之间的
关系以及区别。用老师的话来说:属性看似和字段一样,但是属性
能用来控制非法值,也能用来设置字段的只读属性(只用set或者get
就能设置字段的只写或者只读属性)。
例如:
  1.     class Student
  2.     {
  3.         private string name;
  4.         private int age;

  5.         public string Name
  6.         {
  7.             set { name = value; }
  8.             get { return name; }
  9.         }

  10.         public int Age
  11.         {
  12.             set
  13.             {
  14.                 //若age值非法,则age的值不会改变
  15.                 if (age < 0 || age > 150)
  16.                     return;
  17.                 else
  18.                     age = value;
  19.             }

  20.             get { return age; }
  21.         }
  22.     }
复制代码

但同时,属性作用也离不开字段的存储,因为属性本身是不能存储
任何值的,对属性进行的所有操作都是基于字段才能展开的。
就像是:

  1.     class Program
  2.     {
  3.         static void Main(string[] args)
  4.         {
  5.             Student tom = new Student();

  6.             tom.Age = 10;
  7.             tom.Age = tom.Age + 1;

  8.             Console.WriteLine("tom 的年龄是:{0}", tom.Age);

  9.             Console.ReadKey();
  10.         }

  11.         
  12.     }

  13.     class Student
  14.     {
  15.         public int Age
  16.         {
  17.             set { }
  18.             get { return 3; }
  19.         }
  20.     }
复制代码

另外,用户实现某一功能的时候,是不应该也不愿意去考虑它
的底层操作,同时伴随的一系列问题,也不应该让用户去为之
劳神,这都是程序员做的事。所以,我想将字段私有,而把属性
公开给用户也有这方面的考虑吧!

摸着石头过河,也能收获成就感,初学者的道路其实也是富有
趣味性的,编程的世界如此丰富多彩,呵呵,我……沦陷了!

2 个回复

倒序浏览
哎呦,说的很有道理哦,学习了,赞一个!
回复 使用道具 举报
麦田怪圈 发表于 2014-7-7 16:25
哎呦,说的很有道理哦,学习了,赞一个!

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