一.课堂内容
这周的课讲了chapter4&chapter5的一些内容,关于class和objects,以及inheritance和polymorphism。C#中的这些概念和C++,JAVA这些同为OOP的编程语言中的概念有些类似,但是具体上还是有着一些区别,由于之前学过C++,JAVA中的类和实力,继承与多态的概念,所以学习起来还算比较熟悉,但是精髓的想法以及细节上的处理还是需要话更多更多的时间来联系熟悉融会贯通。
二.学习内容
1.首先做了关于class中this指针的相关联系,PPT中提到了this指针的5个用法,我也上网搜了一些关于C#中this指针的用法,基本与PPT中所讲的没有区别。一下是PPT中的第二个用法的练习,关于passing the current object as a parameter to a method:
这个比较好理解,在C++,JAVA中做过相似的联系。
接下来是PPT中的第四种用法,to call a overloaded constructor from anthor:
这个在之前的学习中没有遇到过这样的用法,有点类似于initialization。
2.接下来是对Using statement的学习,这个东西好像很神奇的样子,表示一直都没有见过这样的用法,于是我上网搜了一下
大致和PPT类似,章老师讲的也非常的清楚,大概是关于一个变量的存活问题,规定了变量存活的区域之类的,在末尾自动释放。
于是我想按照PPT以及网上的指导进行一下练习,但是结果如下:
这里我也不知道是什么原因,Font关键字应该属于System.Drawing的命名空间,我已经申明过来,为什么还是没有能找到呢?
3.然后关于在把变量作为参数传进method的时候,by value还是by reference的问题,C#中与以往的学习略不同,就是关键字ref和out,章老师说这两个关键词只有细微的差别,具有相似的功能,都能实现保留method对传入变量的改变。我很想知道ref和out有什么区别,于是
这么大一段话,其实我就比较理解其中关于初始化要求的那一条,关于返回多个值为什么out就比ref合适呢...后面的就更加看不懂了= =
4.之后是get和set关键字,首先这个以前没接触过,其次不知道为什么总感觉这个有点高端,不大好理解,于是我依葫芦画瓢做了下面的练习:
说实话,我其实还是不太明白get和set的精髓,或者说不太明白他们到底要用在那里,我只能在搜一些相关的资料:
所以说get和set的存在,让数据的维护变得方便安全吧?实在类中对变量进行操作而不是直接对类的变量进行操作把?
5.在多态的学习中,我有对abstract类进行了相关的练习。abstract class无法实例化,只是纯用来被作为父类的。如下练习所示:
这边的练习也用的上文的get和set的关键字。只能说加深了我对多态以及abstract类的理解吧,多态的概念还是得花很长的时间才能真真的理解。
6.关于operator overloading,由于在C++的课程学习中有一次project着重了对运算符重载的练习,我看PPT内容与C++的运算符重载大致相似,于是没有进行练习,只是找了一些相关的代码看了一下。
7.关于windows phone的练习,我的vs开不出模板,不知道是什么问题,也许是hyper-V的问题吧?
三.课后感想
感到学习的内容越来越深入,希望自己能更好地理解C#,毕竟现在还只是接触了皮毛,还有很长的路要走,Go ahead!