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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

本帖最后由 FrancisTan 于 2014-7-9 08:01 编辑
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4. using System.Text;
  5. using System.Threading.Tasks;

  6. namespace 字段属性方法
  7. {
  8.     class Program
  9.     {
  10.         static void Main(string[] args)
  11.         {
  12.             Student fran = new Student("FrancisTan", 24, "Computer Science And Tecnology", "18259180741");
  13.             Console.WriteLine(fran.ToString());

  14.             Student stu = new Student(ref fran);
  15.             Console.WriteLine(stu.ToString());

  16.             Console.ReadKey();
  17.         }
  18.     }

  19.     class Student
  20.     {
  21.         //字段
  22.         private string name;
  23.         private int age;
  24.         private string major;
  25.         private string tel;

  26.         //属性
  27.         public string Name
  28.         {
  29.             get { return name; }
  30.             set { name = value; }
  31.         }

  32.         public int Age
  33.         {
  34.             get { return age; }
  35.             set { age = value; }
  36.         }

  37.         public string Major
  38.         {
  39.             get { return major; }
  40.             set { major = value; }
  41.         }

  42.         public string Tel
  43.         {
  44.             get { return tel; }
  45.             set { tel = value; }
  46.         }

  47.         //构造方法
  48.         public Student(string n, int a, string m, string t)
  49.         {
  50.             Name = n;
  51.             Age = a;
  52.             Major = m;
  53.             Tel = t;
  54.         }

  55.         public Student(ref Student stu)
  56.         {
  57.             Name = stu.Name;
  58.             Age = stu.Age;
  59.             Major = stu.Major;
  60.             Tel = stu.Tel;
  61.         }

  62.         //其他方法
  63.         public override string ToString()
  64.         {
  65.             return "Name  : " + name + "\n"
  66.                  + "Age   : " + age + "\n"
  67.                  + "Major : " + major + "\n"
  68.                  + "Tel   : " + tel + "\n";
  69.         }
  70.     }
  71. }
复制代码

上述代码是我自己定义的第一个C#类。

在这里,我有一个疑问:
在构造函数中到底是直接给字段赋值好呢?
还是通过属性给它们赋值好?

看完视频后,就已经忍不住自己动手写一个类了。
但是写着写着又很迷茫,定义好了一个类后,
发现老师讲的继承或者派生不知道怎么用。
乃至于后面的多态,我在书上看了一遍,看得是
云里雾里的。

当看到自己都快没信心学下去的时候,才猛地一惊,
自己原来太急了。太过于注意表面的一些东西,从上面
我自己写的类中可以看得出来,我现在所掌握的仅仅是
C#中定义类的语法,至于它的运行机制,原理,构造函数
的调用,根本就没有去深思。

为自己明天学习提几个问题吧:
为什么每个类默认继承于System.Object类?
当自定义类型被实例化时,计算机进行了哪些操作?
定义类型时用到的访问限定符,如public, private等,它们的
意义是什么?
要想自己定义的类型被其他人,或者在其他程序当中使用,
应该怎么操作?

好了,最后一个问号打完时,感觉自己浑身轻松,所以,
在学习当中一定要随时调整好自己的心态。个人建议,
在初学阶段,本身了解不够的情况下,不一定非得
打破砂锅问到底,可能别人给你解释的时候,又会涉及到
另外的你不知道的知识,这时就会陷入一个误区,甚至
最后连自己到底要学什么都搞晕了。循序渐进地学习,
开心又快乐,何乐而不为呢?

点评

有人回复后,请及时编辑为提问结束  发表于 2014-7-8 23:50
你好,你发帖子的时候,请把帖子编辑为论坛提问,或者资源分享,不要为版块活动。版块活动,一般只有官方管理员才发  发表于 2014-7-7 17:06

11 个回复

倒序浏览
我说说我想到的~
属性不一定是去操作字段的,当属性封装了一个字段,它可能是只读属性,或者它操作的字段不一定是你所想的那个字段。
1、
  1. int x;
  2.         public int X
  3.         {
  4.             get { return x; }
  5.         }
复制代码

2、
  1. int x;
  2.         int y;
  3.         public int X
  4.         {
  5.             get { return x; }
  6.             set { y = value; }
  7.         }
复制代码


同是初学者,心态的确很重要,共勉:handshake
回复 使用道具 举报
_xixi_ 发表于 2014-7-6 10:59
我说说我想到的~
属性不一定是去操作字段的,当属性封装了一个字段,它可能是只读属性,或者它操作的字段不 ...

哈哈,高见,我去试试,谢谢你啦!
回复 使用道具 举报
都是大牛!膜拜ing!:hug:
回复 使用道具 举报
向晓伟 发表于 2014-7-7 09:59
都是大牛!膜拜ing!

您可太抬举我了,我只是一个初学者,大家共勉吧,加油亲!
回复 使用道具 举报
程序格式很标准,代码是不是可以在优化一下
回复 使用道具 举报
程序格式很标准,代码是不是可以在优化一下
回复 使用道具 举报
自闭宅男 发表于 2014-7-7 10:39
程序格式很标准,代码是不是可以在优化一下

蒽蒽 我其实是看的书上的, 请指教
回复 使用道具 举报
FrancisTan 发表于 2014-7-7 10:07
您可太抬举我了,我只是一个初学者,大家共勉吧,加油亲!

嗯,加油!
回复 使用道具 举报
哦,不好意思  我没注意  给您添麻烦了 那已经发的贴子怎么修改呢?
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马