学习《C#入门经典》(第五版)总结一

时间:2021-03-09 20:00:38

对于已经学习一年半Java的大三的我由于学校课程的原因接触到了C#,所以就此学习了C#,虽说各种编程语言都是互通的,只要精通了一门语言,其他语言就很容易理解,可菜鸟的我到现在也只是仅仅有点这种感觉,还没有完全到达这种境界。希望单枪独斗的我可以继续努力,毕竟大学四年即将过去。

C#和Java都是面向对象的编程语言,有一定Java基础的我似乎进入C#的学习比较快,就目前学习《C#入门经典》(第五版)的1-10章进行学习总结(中间有些部分会和Java做一定的比较进行我的理解):

一.关于.NET Framework的迷惑与理解:

1.      开发应用程序的平台,可以实现不同语言之间彼此可以互相通信,主要包含一个非常大的代码库;

2.      关于托管代码(由CLR管理应用程序)至今没有领悟到什么含义?此处是留下的第一个问题;

二.在C#中,只能编写在托管环境下运行的代码;

三.关于一些缩略词的整理:

1.CTS(Common Type System):通用类型系统;

2.CLR(Common Language Runtime):公共语言运行库,负责管理用.NET库开发的所有应用程序的执行;

3.CIL(Common Intermediate Language):通用中间语言,独立于计算机OS、CPU;

4.JIT(Just-In-Time):反映了CIL代码仅在需要时才编译;

5.GAC(Global Assermbly Cache):全局程序集缓存;

       四.C#源代码编程可执行的目标程序的过程:

              C#源代码——>CIL代码(存储在一个程序集中,程序集中有exe文件、dll文件等其他一些元信息)<使用JIT编译器编译成本机代码>——>本机代码(目标操作系统所能理解的);

四.C#中的名字空间的机制类似于Java中的包机制,至于它们之间可能还存在的不同的细节机制,暂时没有理解到;

五.关于比较运算符C#中可以使用>=与<=,而Java是不允许的;C#中的逻辑运算符&&和&,||和|均可使用,但是尽量使用后者,性能会比较好(短路原则),而Java中的只能使用&&和||;

六.关于全局变量(static)的问题:

1.按照Java的概念,其实是没有全局变量这一说的,但是为了理解,就先在这里不严格的说成是全局变量;

2.C#中的全局成员只能使用其类名进行使用,不能使用对象来引用;而Java中类名和对象均可来引用全局成员;

3.关键字const,使用关键字const声明定义的变量(常量)不能改变,并且在其定义的时候就要进行初始化;按照定义,其实const也是static的(不严格的说法,类似于Java中的static final或者final);

       七.关于应用程序的入口点函数main()的问题:

              1.Java中的主方法必须定义为:public static void main(String[] args) {};而C#中有四种定义方法:staticvoid/int Main([string[] args]),并且可以加上可用的修饰符(public/private/protected);

              2.这里存在一个我不能理解的问题,也许最好的解释就是C#就是这样设计的:

              函数重载:函数的签名包括函数名称和其参数,仅凭返回值是不行的,但是针对这里的Main方法是不是有些互相矛盾?

       八.关于值类型与引用类型的理解:

原先在学习Java时由于最初学习的编程语言是C语言,总是把类看做是对象,但是不严格的可以这样说,但是他们的机制是完全不一样的,结构类型是值类型,而类是引用类型,这里举例说明: