欢迎来到天天文库
浏览记录
ID:42709276
大小:58.50 KB
页数:8页
时间:2019-09-20
《C#初学者入门讲座_20031106》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、C#入门讲座记录主讲:FreeJet这次讲座目的主要是针对C#初学者。其重点解决入门时的一些理解上的困难,以帮助初学者能更好的入门,加快时间,减少些许痛苦。我将重点就语言的一些基本概念来给大家做些讲解,有不足之处请大家帮助指正。.NET是MS新一代分布式计算平台,包含五大主题:一、最底层是CLR,(最接近OS的部分)。有人会说CLR不就是JAVA的虚拟机么?你可以这么理解,但CLR和JVM是不同的。最大的不同在于,JVM是个解释器,也就是说他负责运行JAVA程序,而CLR是一个执行环境,但他并不具体执行。NET程序。CLR负责几个主要事务,1编译已经翻译成MSIL的。NET程序。
2、MSIL是中间语言,CLR将MSIL编译成本地代码,理论上由OS或计算机执行,从这点来看CLR和JVM是不同的。CLR的第二个任务是作为一个执行环境,来完成控制,比如垃圾回收,等等。二、在。NET的第二层,就是框架和系统服务,这就给。NET程序良好的编成环境,比如,大家看到的丰富的类库等等。三、第三层是应用服务框架,比如,IIS,SQLSERVER等等。四、第四层是支持我们程序的具体的宿主,比如IIS中的WEB服务支持等等。五、第五层是我们自己的程序代码,这是立足于我们自己的代码来看的层次。有关CLR和MSIL的问答问:CLR将程序在本地编译,如果是其它操作系统呢?答:CLR必须
3、驻留在运行。NET程序的目标计算机上。我们在VS。NET里编译好的代码的形式是MSIL,MSIL是中间语言不是机器语言,所以必须再次编译,才能运行。问:CLR能否驻留在其它操作系统上?答:CLR就是dotnet。你安装。NET的时候就已经安装运行环境了,CLR=CommonLanguageRuntime。理论上,我们只需要CLR就能开发.NET程序。问:CLR就是个运行环境可以这么说吗?答:这样说不是很全面,不过也可以。问:就向以前的vb运行库一样是吗?答:不一样。VB6orlower的运行环境是解释环境,大家如果记得的话,应该知道,VB代码在5.0以前都是解释的。而不是编译,所
4、以他比C++慢N倍,其次他不具备CLR的基本功能,比如垃圾回收,等等。以上就.NET简单介绍一下。关于CLR,MSIL如果有兴趣我们可以另外单独讲解。那么,回到我们的主题上来:C#语言。就我看来C#语言中最根本的部分是关于类和对象。其余的大家都应该没有困难。C#中主要的部分是类,和对象,其他都不是很难。大家知道,在程序中,有几个地方可以存放数据的:寄存器--》高速cache--->内存器---》硬盘。当程序运行的时候,可以存放程序的数据的有几个地方:寄存器--》内存器(stack,heap,...)---》硬盘(stack:栈,heap:堆)。关于寄存器,你是无法控制的,所以没必
5、要提。硬盘是存放没有读入的或根据某些调价交换出去的内容的,也没有必要提。我们就来看看内存中的情况。假设我有一个程序:publicclasstest{intafx="0";constintabc="0";publicstaticvoiddtd(){}publicvoidFTF(){}}然后有对这个类的实例化testtt=newtest();那么这个tt实际上就存放在堆内存中。堆是这样一个东西:他的大小是整个可用的区域,(除栈和其他外),这个分配就自动在堆内产生一个地址,来容纳这个对象。
6、-------------
7、
8、-------------
9、
10、-------------
11、
12、---
13、----------
14、……我们现在讲栈,栈在数据结构中就有这个内容,是一种先近后出的结构,大家应该都知道,就不多说了。好了,我们的准备知识都有了,现在就来讲C#中这个类和对象。首先,类---是一个概念对象---是一个实际存在的东西。所谓概念,他是看不见,摸不着的东西。而对象是实际存在的东西,所以,类就好比一个模板,而只有按照这个模版实际生成一个实际的例子的时候,对象才能存在。这就是类和对象的关系。A.现在就讲第一个要点。testtt=newtext();在这里,tt是什么呢?这是一个十分关键的问题。testtt这一步申明一个test类型的引用,就是告诉CLR,请给我一块空间。ne
15、wtest();实际在堆内存中开辟一块区域存放新的test对象,并把地址放到tt里。testtt这一步申明一个test类型的引用就是告诉CLR,请给我一块空间newtest();实际在堆内存中开辟一块区域存放新的test对象,并把地址放到tt里。所以,tt是指向一个test类型对象区的一个。我再换个方式讲,testtt=newtest();这个动作是实例化了一个test类型的对象,这个大家都没问题吧。那么intt=0;这个动作申明了一个int类型的变量并给一个0对吧。那么,我们都
此文档下载收益归作者所有