C#学习笔记(三)

原创 2002年04月05日 09:31:00

written by cash (天下第七)


2002.04.01


版权所有,翻录不究


cashcao@msn.com


<?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" />

 


开始


 


20006月我大学毕业,从北京回到了石家庄,正式开始了我的职业生涯。如前所述,一开始我使用的语言是asp,我一直认为这不能称之为编程,因为asp不是一种编程语言,把它叫做动态网页实现技术可能更好。另外,asp很简单,并且,简单就是它全部的特点--这使得它很容易就能学会(在后来的工作中,我接触到许多应聘的学生,他们都告诉我自己精通asp语言)。虽然学习起来很简单,但是在使用起来却不得不多费点儿劲儿:我还能记得自己晚上一个人在办公室用VI一步一步调试某一个网页的情景,每当遇到挫折失败的时候,总是想起给桐桐打一个电话,听听她的声音。如你所知,我总是遇到困难。


 


现在你能看出来,我不是高手,只是一个低手...


 


20006月我大学毕业,从北京回到了石家庄,同一时间(美国西部时间622日上午),微软公司在位于美国西雅图郊外的总部内邀请新闻记者、新闻分析家等约400人,举行了新闻发布会“Forum2000”,宣布正式推出.Net计划。这个计划中包括了新的网络计算平台(.Net Framework)、新的语言(C#)、新的开发工具(Visual Studio.Net)以及asp的下一个版本ASP.NET,后者最开始被称为ASP+。那时候我学习的主要兴趣就在ASP.NET上,并且通过这个窗口开始了解Microsoft.Net的各个方面。


ASP.NET仍然不能称之为一种编程语言,但是现在可以把它看作是一个创建、管理、部署Web应用程序的平台。可以使用任何.Net语言在这个平台上开发互联网应用程序,这其中当然包括C#。它们之间的关系可以从下图中看出:


.Net平台结构图

<?xml:namespace prefix = v ns = "urn:schemas-microsoft-com:vml" />


这就是著名的.Net 平台结构图,从这个图上可以看到,ASP.NETWindows FormsVS.Net都不过是.Net开发平台的一部分,用于.Net应用程序的开发及展示。.Net 平台的核心技术为:通用语言运行时(CLRCommon Language Runtime)、基类库(Base Class Library).Net语言及Visual Studio.Net


从这个图上也可以看出,.Net Framework是架构在Windows平台上的一个虚拟的运行平台,你可以想象将最下层的Windows换作其它的操作系统,比如说Linux,一样可以实现使用符合了CLS(Common Language Specification,通用语言规范).Net语言(VB.NetC#JScript.Net)来创建ASP.NETWindows Forms(可能会叫做Linux Forms)应用程序的功能,这其实就是我们前面介绍的Mono计划所要实现的功能。所以可以这么认为,理论上,C#是一种可以跨平台的语言,这很像Java,另一个比较像Java的地方是,C#也是一种(特殊意义上的)解释性的语言。同Java一样,C#编写的程序代码也是先通过C#编译器编译为一种特殊的字节代码(中间语言Microsoft Intermediate LanguageMSIL),运行的时候再经由特定的编译器(JIT编译器,Just In TimeJITer)编译为机器代码以供操作系统执行。


不仅是C#语言,所有.Net语言(将会包括我们常用的几十种现代的编程语言)都可以编写面向CLR的程序代码,这种代码在.Net中被称为托管代码(Managed Code),所有的Managed Code都直接运行在CLR上,具有与平台无关的特性。


解释性的语言很安全,并且可以通过它的运行平台为其赋予更多的功能,比如自动内存管理、异常处理等。事实上,C#语言的许多特点都是由CLR提供的,下面的CLR结构图说明了这一点。


CLR结构图


可以看到,类型安全(Type Checker)、垃圾回收(Garbage Collector)、异常处理(Exception Manager)、向下兼容(COM Marshaler)、多线程支持(Thread Support)这些C#的特点都是由CLR来提供的。CLR最早被称为下一代Windows服务运行时(NGWS Runtime),是直接建立在操作系统层上的一个虚拟的运行环境,主要的功能是管理代码的运行。在.Net 平台结构图中,CLR的上面是.Net的基类库(Base Class LibraryBCL),这组基类库包括了从基本输入输出到数据访问等各方面,提供了一个统一的面向对象的、层次化的、可扩展的编程接口。从.Net 平台结构图中也可以看到,基类库可以被各种语言调用和扩展,也就是说,不管是C#VB.NET还是VC++.NET,都可以自由地调用.Net的基类库。事实上, C#并没有属于自己的类库,它所使用的编程接口就是.Net提供的基类库。所以,在决定使用C#时,真正需要费工夫学习的其实是.NET框架的基类库:C#自身只有区区77个关键词,而且其语法对许多程序员来说都是他们非常熟悉的。BCL则相反,它包含了超过4500个以上的类和无数的方法、属性,在你的C# 程序中随时都可能会用到它来完成自己的任务。


 


很多人都思考过应如何开始学习一种新的语言,对于一个有经验的编程人员来讲,这确非难事。但是对于一个对编写代码一无所知的人而言,如果你是以C#开始你的编程之旅的,数目繁多的概念及新名词可能会令你有些不知所措。这时候请注意你的学习顺序,任何一种编程语言的学习都是按照运行平台、语法、基类库直至各方面的应用这一顺序来进行的,但是在实际的学习中,它们之间并不是孤立的。推荐的方法是:对运行平台和语法有了一个整体的认识后,在应用中学习各种基类库的用法。鉴于C#这一语言的特殊性,全面了解它的运行平台(.Net Framework)必会使你的学习事半功倍。所以请记住上面提到的两个图,在以后的学习中,虽然可能不会明确的涉及到它们,但是在整个C#的学习过程中,它们却是无处不在的。


 


还有一个很重要的概念需要你明白,这就是公共语言架构(Common Language Infrastructure CLI)CLICLR的一个子集,也就是.NET中最终对编译成MSIL代码的应用程序的运行环境进行管理的那一部分。在CLR结构图中CLI位于下半部分,主要包括类加载器(Class Loader)、实时编译器(IL To Native Compilers)和一个运行时环境的垃圾收集器(Garbage Collector)CLI.NetCLR的灵魂,CLIIL代码提供运行的环境,你可以将使用任何语言编写的代码通过其特定的编译器转换为MSIL代码之后运行其上,甚至还可以自己写MSIL代码在CLI上面运行。如你所知,欧洲计算机制造商协会(ECMA)已经于20011013日批准C#语言规范(ECMA-334)成为一种新诞生的计算机产业标准。同时国际标准组织ISO也同意该标准进入该组织的审批阶段。并且,作为.NetCLR的核心部分,CLIC#也同时获得了ECMA的批准(ECMA-335)。拥有了C#CLI这两项标准,你可以自己写出能够运行于任何操作系统上的.Net平台(只要你愿意)。如前所述,著名的Mono项目就是这么干的,Mono项目包括三个核心的部分:一个C#语言的编译器,一个CLI和一个类库。在Java的世界中,这项工作是由SUN公司完成的,SUN针对不同的操作系统开发出相应的Java虚拟机以便让一个由Java开发的应用程序运行在不同的操作系统上,但是迄今为止还没听说过微软有这方面打算(为用户提供非Windows系统的.Net平台)


 


2000年的6月还有很多事情发生,2000年的6月我在学校做毕设,晚上就跑到系试验室看欧锦赛,我很喜欢的坎普君(Bergkamp)大放异彩,帮助荷兰队61大胜南斯拉夫,米哈伊洛维奇 (Mihajlovic)在比赛最后莫名的笑容永远留在了我的心中。说实话,那时候只顾着看EURO2000,可没管什么.Net.Not。另外,离别的愁绪围绕在每个人的周围,广播里开始反反复复播放一些古老的歌曲,不知道为什么,恋曲1980却是那时候的最爱。


 


后来,我们都毕了业。如你所知,我离开了北京。


 


>>>未完,待续...

WebGL学习笔记(一)

作者:朱金灿来源:http://blog.csdn.net/clever101  (一)WebGL是什么?             WebGL是一门在网页上显示三维图形的技术,你可以把它理解为把Ope...
  • clever101
  • clever101
  • 2017年01月27日 14:33
  • 1259

周志华《机器学习》笔记:第3章 线性模型

本章概括 从最简单但也是最基础的线性模型开始研究。线性模型虽然简单,但却是基础。先研究线性、单属性的线性回归问题,在此基础上研究非线性、多属性的回归和分类问题。 第3章 线性模型 单属性...
  • yzqzoom
  • yzqzoom
  • 2016年07月10日 12:11
  • 3119

shell脚本学习笔记一

又开始写学习笔记了,呵呵。。。 今年打算选择一门技术系统的学习一下。编程语言、虚拟机技术、数据库、大数据、云计算在这些种类中,我选择了shell编程。为什么选择shell呢?也没有什么具体的原因。以...
  • lpioneer
  • lpioneer
  • 2014年02月25日 17:01
  • 2086

CSharp学习笔记之三 C#中的字符串

什么是字符串: 字符串是 String类型的对象,它的值是文本。在内部,文本被存储为 Char对象的顺序只读集合。  C# 字符串末尾没有以 null 结尾的字符;因此 C# 字符串可以包含任意数目的...
  • caosiyuan1991
  • caosiyuan1991
  • 2013年12月04日 10:15
  • 3805

C# kinect v2学习笔记(三) 彩色图像

彩色图像和红外、深度图像的处理基本类似,特别是深度图像,代码几乎看不出差别,当然使用的情况不一样啊,有兴趣的可以先去研究官方SDK中的coordinatemapping这个抠图的示例,运用体感器来实现...
  • htiannuo
  • htiannuo
  • 2016年03月20日 09:12
  • 1243

Visual C#2010学习笔记三之return返回值的使用

今天详细了解了返回值reutrn的用法,return语句就是终止它出现在其中的方法的执行,并将控制返回给调用方法。它还可以返回一个可选值。我的理解是:return返回值就是你自己设定的方法运行的结果,...
  • u010722980
  • u010722980
  • 2015年08月08日 22:15
  • 258

学习笔记(三)-----C#的设计模式

设计模式 1.工厂模式:所有的对象的创造都在一个类(都由一个对象)里面创造 示例: public class Fruit { public virtual void ShowMe...
  • qq_16535545
  • qq_16535545
  • 2017年08月05日 14:17
  • 100

C#与图像处理学习笔记(三)

 彩色图像的变换:彩色图像的变换主要包括:逆反变换、平滑处理、霓虹处理、锐化处理、浮雕处理、镶嵌处理、灰度处理、透明变换。设f(i, j).R、f(i, j).G、f(i, j).B分别代表源图像像素...
  • tao_sun
  • tao_sun
  • 2011年06月06日 19:15
  • 467

C#学习笔记(三)

1. 三元运算符 2.
  • sxllllwd
  • sxllllwd
  • 2015年09月19日 11:49
  • 235

C#和.NET基础知识——学习笔记(三)

面向对象的概念 1. 类和对象 类是模子,确定对象将会拥有的特征(属性)和行为(方法)。 类是对象的类型,类是抽象的概念。 对象可以叫做类的实例(Instance)。 语法: [访问修饰符...
  • yuzhongchun
  • yuzhongchun
  • 2013年09月15日 10:42
  • 810
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:C#学习笔记(三)
举报原因:
原因补充:

(最多只允许输入30个字)