欢迎您加入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#仅允许一个基类。如果您觉得需要多重继承,可以运
最近小相必很多人都和小编一样很喜欢一首歌。你的笑温暖我每一秒,听起来就很舒服。这是在抖音上听到的,非常的温暖。好喜欢你的笑温暖我每一秒是什么歌 《拥抱你的滋味》完整歌词在线听歌。好技术带来相关介绍...
微信卸载重装怎么恢复记录?微信现如今已经成功走出了国门,连外国友人都会使用微信聊天。在日常生活中,微信聊天记录承载了我们很多的记忆,相信很多人都不会轻易删除自己的微信聊天记录。但如果微信出现了数据...
光遇9月24日复刻先祖在哪里?光遇手游将于本周四迎来有一位旅行先祖,我们可以和这位先祖兑换艺术家发型、扁嘴雀面具、白钢琴音色和骑士礼动作。下面就是光遇9.24旅行先祖位置介绍了,小伙伴们一起来看看吧!...
“隐私”高度透明时代,怎么彻底删除谈天记录 怎么彻底删除谈天记录?说到微信谈天许多同伙都在想,我们手机上的微信谈天记录是可以彻底删除的吗?我们都知道在信息高度透明的时代,隐私已经逐步成为了一个伪命...
现在土豪那么多,手机买三五千属于正常,而上万级别的电脑对于高大上的土豪们也都是小KS,理论上电脑是越贵越好,性能越贵越高,运行速度上也胜人一筹,但是大多数都高端电脑配置估计能使用到10分之3的性能就不...
李晓霞。北京时间2012年8月1日晚,2012年伦敦奥运会乒乓球女单赛事决赛拉开帷幕,来自中国的两位巾帼在决赛相遇,最终。 1988年汉城奥运会中国陈静:决赛陈静3:2李慧芬特点:打法凶狠,反手弹击,...