首 页 网络编程
网页制作 图形图象 操作系统 冲浪宝典
软件教学 认证考试

网络安全 网络办公 行业资讯 评测对比
您当前位置:站长天空 -> 网络编程-> C#/CSHARP教程
《.net编程先锋C#》第一章 C#简介-.NET教程,C#语言
作者:网友供稿 点击:342
推荐
西部数码-全国虚拟主机10强!20余项虚拟主机管理功能,全国领先!第6代双线路虚拟主机,南北访问畅通无阻!可在线rar解压,自动数据恢复设置虚拟目录等.免费赠送访问统计,企业邮局.Cn域名注册10元/年,自助建站480元起,免费试用7天,满意再付款!P4主机租用799元/月.月付免压金
站内搜索
文章页数:[1] 
第一章 c# 简介  欢迎您加入c#的世界! 这一章将把您引进c#的天地,并回答一些相关的问题,如:您为什么要使用c#,c++和c#的主要有什么不同点,以及为什么c#使开发更容易而且还使您感到很有趣。
为什么是另外一种编程语言?
 必须回答的一个问题:当您已经使用c++或vb从事企业开发时,为什么还要学习另一种语言? 市场式的回答就是:"在企业计算领域,c#将会变成为用于编写"下一代窗口服务"(next generation windows services,简写为ngws )应用程序的主要语言。" 这一章将对用参数请求提供支持,并陈列了c#的一些功能。这一章会使您开胃的。
 c#语言自c/c++演变而来。但是,它现代、简单、完全面向对象和类型安全。如果您是c/c++程序员,学习曲线将会很平坦。许多c#语句直接借用您所喜爱的语言,包括表达式和操作符。假如不仔细看,简直会把它当成c++。
 关于c#最重要的一点:它是现代的编程语言。它简化和现代化了c++在类、名字空间、方法重载和异常处理等领域。屏弃了c++的复杂性,使它更易用、更少出错。
 对c#的易用有贡献的是减少了c++的一些特性,不再有宏、模板和多重继承。特别对企业开发者来说,上述功能只会产生更多的麻烦而不是效益。
 使编程更方便的新功能是严格的类型安全、版本控制、垃圾收集(garbage collect)等等。所有的这些功能的目标都是瞄准了开发面向组件的软件。

 在继续呈现出更多的功能之前,我想停下来并在下面说明c#至关重要的各种要素。

简单
现代
面向对象
类型安全
版本控制
兼容
灵活


简单
 c#具有c++所没有的一 个优势就是学习简单。该语言首要的目标就是简单。很多功能(还不如说是缺少了c++的一些功能)有助于c#全方位的简单。
 在c#中,没有c++中流行的指针。默认地,您工作在受管理的代码中,在那里不允许如直接存取内存等不安全的操作。我想没有c++程序员可以声称,从没有使用指针访问过不属于他们的内存。
 与指针"戏剧性"密切相关的是"愚蠢的"操作。在c++中,有::、.、和->操作符,它们用于名字空间、成员和引用。对于新手来说,操作符至今仍是学习的一道难关。c#弃用其它操作符,仅使用单个操作符 "."。现在一个程序员所需要理解的就是嵌套名字的注解了。
 您不必记住基于不同处理器架构的隐含的类型,甚至各种整型的变化范围。c#使用统一的类型系统,屏弃了c++多变的类型系统。这种系统充许您把各种类型作为一个对象查看,它是一个原始类型还是一个full-blown 类。和其它编程语言相比,由于加框(boxing)和消框(unboxing)的机制,把简单类型当作对象处理并不能获得性能的改善。稍后将详细解释加框和消框,但基本上仅当需要时才使用对象访问简单类型这种技术。
 首先,老练的程序员可能不喜欢它,但是整型和布尔型如今终归是两种完全不同的数据类型。这就意味着原来if语句中错误的赋值现在会被编译出错,因为if语句只接受布尔类型的值。再也不会出现误用赋值符为比较符这样的错误!
 c#同时也解决了存在于c++中已经有些年头的多余东西(redundancies)。这种多余包括常数预定义,不同字符类型等。鉴于多余表单已经从该语言中消失,故一般在c#中都可以使用表单了。

现代
 您投入学习c#的努力是一笔大投资,因为c#是为编写ngws 应用程序的主要语言而设计。您 将会发现很多自己用c++可以实现或者很费力实现的功能,在c#中不过是一部分基本的功能而已。
 对于企业级的编程语言来说,新增的金融数据类型很受欢迎。您用到了一种新的十进制数据类型,它专用于金融计算方面。如果不喜欢这种现成简单的类型,根据您应用程序的特殊需求,可以很容易地创建出新的一种数据类型。
 我已经提到,指针不再是您编程武器的一部分。不要太惊讶,全面的内存管理已经不是您的任务。运行时ngws提供了一个垃圾收集器,负责c#程序中的内存管理。因内存和应用程序都受到管理,所以很必要增强类型安全,以确保应用的稳定性。
 对于c++程序员,异常处理的切不是新的东西,但它是c#的主要功能。c#的异常处理与c++的不同点在于它是交叉语言的(运行时的另一个功能)。在没有c#之前,您必须处理怪异的hresults,但现在由于使用了基于异常的健壮的出错处理, 这一切都 结束了。
 对于现代的应用程序,安全是首要的,c#也不会例外。它提供了元数据语法,用于声明下述ngws安全模式的能力和许可。元数据是ngws运行时的一个关键的概念,下一章将涉及到它更深的含义。

面向对象
 您不会预料一种新语言不支持面向对象的功能吧? c#当然支持所有关键的面向对象的概念,如封装、继承和多态性。完整的c#类模式构建在ngws运行时的虚拟对象系统(vos,virtual object system)的上层,vos将在下章描述。对象模式只是基础的一部分,不再是编程语言的一部分。
 您一开始必须关注的事,就是不再有全局函数、变量或者是常量。所有的东西都封装在类中,包括事例成员(通过类的事例--对象可以访问)或都静态成员(通过数据类型)。这些使c#代码更加易读且有助于减少潜在的命名冲突。
 定义类中的方法默认是非虚拟的(它们不能被派生类改写)。主要论点是,这样会消除由于偶尔改写方法而导致另外一些原码出错。要改写方法,必须具有显式的虚拟标志。 这种行为不但缩减速了虚拟函数表,而且还确保正确版本的控制。
 使用c++编写类,您可以使用访问权限(access modifiers) 给类成员设置不同的访问等级。c#同样支持private、protected 和public 三种访问权限 ,而且还增加了第四种:internal。有关访问权限 的详细情况将在第五章 "类" 中说明。
 您曾经创建了多少个类是从多基类派生出来的(atl 程序员,您的投票不计在内!) ? 大多数情况,仅需从一个类派生出。多基类惹出的麻烦通常比它们解决的问题还多。那就是为什么c#仅允许一个基类。如果您觉得需要多重继承,可以运用接口。
 一个可能出现的问题:在c#中不存在指针,如何模仿它? 这个问题的答案很有代表性,它提供了对ngws运行时事件模式的支持。再次,我将把对它的全面解释放到第五章。

类型安全
 我再次选指针作为一个例子。在c++中拥有一个指针,您能自由地把它强制转换成为任何类型,包括干出诸如把一个int*(整型指针)强制转换成一个double *(双精度指针)这样的傻事。只要内存支持这种操作,它就"干过"。这并不是您所想象的企业级编程语言的类型安全。
 纲要性的问题,c#实施最严格的类型安全,以保护自己及垃圾收集器(garbage collector)。所以必须遵守c#中一些相关变量的规则:
 您不能使用没有初始化的变量。对于对象的成员变量,编译器负责清零。而局部变量,则由您负责清零。当您使用一个没有初始化的变量时,编译器会教您怎么做。优点是能够避免由于使用不经初始化的变量计算结果而导致的错误,而您还不知道这些奇怪的结果是如何产生的。
 c#取消了不安全的类型转换。不能把一个整型强制转换成一个引用类型(如对象),而当向下转换时,c#验证这种转换是正确的。(也就是说,派生类真的是从向下转换的那个类派生出来的。)
 边界检查是c#的一部分。再也不会出现这种情况:当数组实际只定义了n-1个元素,却超额地使用了n个元素。
 算术运算有可能溢出终值数据类型的范围。c#允许在语句级或应用程序级检测这些运算。在允许检测溢出的情况下,当溢出发生时将会抛出一个异常。
 在c#中,被传递的引用参数是类型安全的。

版本可控(versionable)
 在过去的几年中,几乎所有的程序员都至少有一次不得不涉及到众所周知的"dll地狱"。该问题起因于多个应用程序都安装了相同dll名字的不同版本。有时,老版本的应用程序可以很好地和新版本的dll一起工作,但是更多的时候它们会中断运行。现在的版本问题真是令人头痛。
 就象您将在第八章"用c#写组件"所看到的,ngws runtime 将对您所写的应用程序提供版本支持。c#可以最好地支持版本控制。尽管c#不能确保正确的版本控制,但是它可以为程序员保证版本控制成为可能。有这种支持,一个开发人员就可以确保当他的类库升级时,仍保留着对已存在的客户应用程序的二进制兼容。

兼容
 c#并没有存在于一个封闭的世界中。它允许使用最先进的ngws的通用语言规定(common language specification,简写为cls)访问不同的api。cls规定了一个标准,用于符合这种标准的语言的内部之间的操作。为了加强cls的编译,c#编译器检测所有的公共出口编译,并在通不过时列出错误。
 当然,您也想能够访问旧一点的com对象。ngws运行时提供对com透明的访问。如何集成原来的代码将在第10章"非管理代码的内部操作"有介绍。
 ole 自动化是一种特殊的动物。任一个使用c++创建ole自动化项目的人已经喜欢上各种各样的自动化数据类型。有个好消息就是c#支持它们,而没有烦锁的细节。
 最后,c#允许您 用c 原型的api进持内部操作。可以从您的应用程序访问任何dll中的入口点(有c的原型)。用于访问原始api的功能称作平台调用服务(plaform invocation services ,缩写pinovke),第10章将展示使用c api进行内部操作的一些例子。

灵活
 上一部分的最后一段有可能提醒了程序员。您可能会问:"难道就没有我要传递指针的api吗?" 您是正确的。不是仅有少数的这种api,而是很多(有点保守的估计)。这种对原始win32代码的访问有时导致对非安全类指定指针的使用(尽管它们中的一些由于受com和pinvoke的支持可以解决)。
 尽管c#代码的缺省状态是类型安全的,但是您可以声明一些类或者仅声明类的的方法是非安全类型的。这样的声明允许您使用指针、结构,静态地分配数组。安全码和非安全码都运行在同一个管理空间,这样暗示着当从安全码调用非安全码时不会陷入列集(marshaling)。

小结
 c#语言从c和c++演变而来,它是给那些愿意牺牲c++一点底层功能,以获得更方便和更产品化的企业开发人员而创造的。c#现代、简单、面向对象和类型安全。尽管它借鉴了c和c++的许多东西,但是在一些诸如名字空间、类、方法和异常处理等特定领域,它们之间还存在着巨大的差异。
 c#为您提供了方便的功能,如垃圾收集、类型安全、版本控制,等等。仅有的"代价"就是,代码操作默认是类型安全的,不允许指针。光是类型安全就可以搞定了。但是,如果您需要指针,仍可以通过非安全码使用它们,而且当调用非安全码时,不能含有列集。

文章整理:站长天空 网址:http://www.z6688.com/
以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!

文章页数:[1] 


放大字体显示 缩小字体显示 打印文章 推荐给朋友
热门文章
·使用C#编写Windows Forms应用程序(转)-.NET教程,Windows开发
·C#学习杂记-.NET教程,C#语言
·将文本格式的文章转换为html/xml格式文本的功能封装到Javabean-JSP教程,Java技巧及代码
·用java小程序applet实现无限级树结构-JSP教程,Java技巧及代码
·《.net编程先锋C#》第一章 C#简介-.NET教程,C#语言
·企业人事信息管理系统1.0-ASP教程,数据库相关
·《.net编程先锋C#》第三章 第一个C#应用程序-.NET教程,C#语言
·《.net编程先锋C#》第二章 理论基础-公用语言 运行环境-.NET教程,C#语言
·Windows应用程序调试必备的--符号文件(Symbols)-.NET教程,评论及其它
·c#反编译微软msdn2003的帮助文档,并将反编译结果保存到一个sqlserver数据库中
最新文章
·vista的新特性:懒人的安全感_windows vista
·photoshop为情侣照片打造韩式梦幻相框_photoshop教程
·专访seobbs站长乐思蜀_站长访谈
·嘟嘟网络陈艺光:诚信是一种信仰_站长访谈
·俺自己黄修源:只问耕耘,不问收获_站长访谈
·李向华:如何提高论坛用户粘性_站长访谈
·给windows vista系统网络和共享中心“换脸”_windows vista
·胡宪东谈搜索优化的实战_站长心得
·网站快速成功的九个步骤_站长心得
·google pr数字背后的含意_google推广
相关主题
  • 《.NET软件技术学习与实践》之序言-.NET教程,.NET Framework
  • 《.net编程先锋C#》第七章 异常处理-.NET教程,C#语言
  • 《.net编程先锋C#》第六章 控制语句-.NET教程,C#语言
  • 《.net编程先锋C#》第五章 类-.NET教程,C#语言
  • 《.net编程先锋C#》第四章 C#类型-.NET教程,C#语言
  • 西部数码虚拟主机

    友情链接
    CNNIC 西部数码
    万网 自助建站
    虚拟主机 asp空间
    域名注册 域名
    域名申请 主页空间
    论坛空间 网站空间
    国际域名 虚拟空间
    空间租用 DDOS防火墙
    成都主机托管 四川主机托管
    主机租用 服务器租用
    网站目录 自助建站
    虚拟主机 网址大全
    软件下载
    自助链接
    虚拟主机资讯 特价虚拟主机
    版权申明:本站文章均来自网络,如有侵权,请联系我们,我们收到后立即删除,谢谢!
    关于我们:站长天空:专业提供最新的站长资讯、在线教程、虚拟主机权威评测、虚拟主机性能对比、网站制作教程,开发教程,站长工具。包括网页制作教程、冲浪宝典、编程参考、操作系统、软件教学、行业动态等。
    特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有。
    发表评论 打印  刷新     关闭