大家好今天来谈谈关于C#语言类型系统,这个对于学习这门语言来说太重要了,很多小伙伴自学C#编程为什么会感觉很难、学习很长时间没有效果,主要原因之一肯定是没有对类型系统有深入或者全局性的了解。
我们先看C#的祖先类object他是一个类类型,这是C#类型出生的地方,从这里后面衍生出了几大类型比如struct(结构)和record(记录类型C#9.0),我们常用的int,double,float等都是结构类型,string、array等等但是这些都是微软定义好的,我们叫它预定义类型,我们拿过来就可以直接使用,我们也可以自己定义。下面我们定义一个学生类用它来表示一个描述一个学生信息。
大家注意到我们第三个属性StuClass是用来保存学生的班级信息,如果我们现在用它来保存班级是能保存一个字符串进去,但是班级信息我们一般可能会有更多信息比如以前班级还分等级或者类型,那保存一个字符串就不符合实际情况了,这是我们可以这样做。
我们通过把StuClass类型换成了自定义的类类型,这样我们做到了在一个属性类保存多个数据的功能,另外我们Category还可以往下分,从关系数据设计的角度来说,这些类型我没有封装行为方法在里面,因为我只想用这个自定义类型存储传输数据,我们现在虽然是从上往下封装,但是大部分同学喜欢从下往上封装,个人觉得从上往下是个非常好的方式,我们写C#代码的时候其实就是在把微软提供给我们的基本预定义类型(int,string等基本类型)封装成我们实际使用的类型。
我们打开一个string类型看看内部定义。
我们看到这里面无非就是定义了一些方法属性字段,索引器之类的成员。
本质上C#类型系统就是一个俄罗斯套娃,或者说大肠包小肠操作,我们在写C#代码的时候不是在编写类型的路上,就是在学习类型的路上,java这类强类型oop语言也是如此。
我们知道了类型系统的本质和套路以后我们就知道如何学习他了,基本上我们从两方面下手。
第一点肯定是要先学习类型,你需要知道这个类型是用来干什么的,先了解他的总体功能,在了解一写这个类型里面重要的几个功能就可以,不要详细了解,详细了解没有必要,太浪费时间,微软的类型几万个估计一辈子也学不完,我们要的就是了解几个重点的其他一看就会用,当然要做到一看就会用这是根据你类型知识库的多少相关,你了解的类型越多,越容易做到。
第二点是了解技术和业务的原理,比如你要学习多线程的时候不知道计算机的一些基本组成和一些关于操作系统的原理那你基本上学不会,或者就算模仿成了让你写出一个好的多线程应用程序几乎不可能。
总的来说这两点是相辅相成的,这一些是本人的一些经验分享,自己踩过不少坑,看过一些书,看过很多视频教程,免费的收费的,有些还挺贵,但是都只告诉了我做什么事,要怎么做,没有告诉我为什么这样做?希望对大家有帮助,有什么想交流的可以留言,本人知识有限难免有错误和遗漏之处,欢迎大家批评指正,谢谢!