新书推介:《语义网技术体系》
作者:瞿裕忠,胡伟,程龚
   XML论坛     W3CHINA.ORG讨论区     计算机科学论坛     SOAChina论坛     Blog     开放翻译计划     新浪微博  
 
  • 首页
  • 登录
  • 注册
  • 软件下载
  • 资料下载
  • 核心成员
  • 帮助
  •   Add to Google

    >> 本版讨论.NET,C#,ASP,VB技术
    [返回] 中文XML论坛 - 专业的XML技术讨论区计算机技术与应用『 Dot NET,C#,ASP,VB 』 → <展现 C#> (rainbow 翻译)- 第一章 C#简介 查看新帖用户列表

      发表一个新主题  发表一个新投票  回复主题  (订阅本版) 您是本帖的第 11589 个阅读者浏览上一篇主题  刷新本主题   树形显示贴子 浏览下一篇主题
     * 贴子主题: <展现 C#> (rainbow 翻译)- 第一章 C#简介 举报  打印  推荐  IE收藏夹 
       本主题类别:     
     admin 帅哥哟,离线,有人找我吗?
      
      
      
      威望:9
      头衔:W3China站长
      等级:计算机硕士学位(管理员)
      文章:5255
      积分:18406
      门派:W3CHINA.ORG
      注册:2003/10/5

    姓名:(无权查看)
    城市:(无权查看)
    院校:(无权查看)
    给admin发送一个短消息 把admin加入好友 查看admin的个人资料 搜索admin在『 Dot NET,C#,ASP,VB 』的所有贴子 点击这里发送电邮给admin  访问admin的主页 引用回复这个贴子 回复这个贴子 查看admin的博客楼主
    发贴心情 <展现 C#> (rainbow 翻译)- 第一章 C#简介


    发信人: wuxq (很想好好休息), 信区: DotNET        
    标  题: <展现 C#> (rainbow 翻译)- 第一章 C#简介
    发信站: BBS 水木清华站 (Mon Apr 30 13:41:34 2001)

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

    类型安全
        我再次选指针作为一个例子。在C++中拥有一个指针,您能自由地把它强制转换成为
    任何类型,包括干出诸如把一个int*(整型指针)强制转换成一个double *(双精度指针)
    这样的傻事。只要内存支持这种操作,它就"干过"。这并不是您所想象的企业级编程语
    言的类型安全。
        纲要性的问题,,C#实施最严格的类型安全,以保护自己及垃圾收集器(garbage co
    llector)。所以必须遵守C#中一些相关变量的规则:
        您不能使用没有初始化的变量。对于对象的成员变量,编译器负责清零。而局部变
    量,则由您负责清零。当您使用一个没有初始化的变量时,编译器会教您怎么做。优点
    是能够避免由于使用不经初始化的变量计算结果而导致的错误,而您还不知道这些奇怪
    的结果是如何产生的。
        C#取消了不安全的类型转换。不能把一个整型强制转换成一个引用类型(如对象),
    而当向下转换时,C#验证这种转换是正确的。(也就是说,派生类真的是从向下转换的那
    个类派生出来的。)
    边界检查是C#的一部分。再也不会出现这种情况:当数组实际只定义了n-1个元素,却超
    额地使用了n个元素。
        算术运算有可能溢出终值数据类型的范围。C#允许在语句级或应用程序级检测这些
    运算。在允许检测溢出的情况下,当溢出发生时将会抛出一个异常。
        在C#中,被传递的引用参数是类型安全的。
    版本可控(Versionable)
        在过去的几年中,几乎所有的程序员都至少有一次不得不涉及到众所周知的"DLL地
    狱"。该问题起因于多个应用程序都安装了相同DLL名字的不同版本。有时,老版本的应
    用程序可以很好地和新版本的DLL一起工作,但是更多的时候它们会中断运行。现在的版
    本问题真是令人头痛。
    就象您将在第八章"用C#写组件"所看到的,NGWS runtime 将对您所写的应用程序提供版
    本支持。C#可以最好地支持版本控制。尽管C#不能确保正确的版本控制,但是它可以为
    程序员保证版本控制成为可能。有这种支持,一个开发人员就可以确保当他的类库升级
    时,仍保留着对已存在的客户应用程序的二进制兼容。
    兼容
        C#并没有存在于一个封闭的世界中。它允许使用最先进的NGWS的通用语言规定(Com
    mon Language Specification,简写为CLS)访问不同的API。CLS规定了一个标准,用于
    符合这种标准的语言的内部之间的操作。为了加强CLS的编译,C#编译器检测所有的公共
    出口编译,并在通不过时列出错误。
        当然,您也想能够访问旧一点的COM对象。NGWS运行时提供对COM透明的访问。如何
    集成原来的代码将在第10章"非管理代码的内部操作"有介绍。
        OLE 自动化是一种特殊的动物。任一个使用C++创建OLE自动化项目的人已经喜欢上
    各种各样的自动化数据类型。有个好消息就是C#支持它们,而没有烦锁的细节。
        最后,C#允许您 用C 原型的API进持内部操作。可以从您的应用程序访问任何DLL中
    的入口点(有C的原型)。用于访问原始API的功能称作平台调用服务(Plaform Invocatio
    n Services ,缩写PInovke),第10章将展示使用C  API进行内部操作的一些例子。
    灵活
        上一部分的最后一段有可能提醒了程序员。您可能会问:"难道就没有我要传递指针
    的API吗?" 您是正确的。不是仅有少数的这种API,而是很多(有点保守的估计)。这种对
    原始WIN32代码的访问有时导致对非安全类指定指针的使用(尽管它们中的一些由于受CO
    M和PInvoke的支持可以解决)。
        尽管C#代码的缺省状态是类型安全的,但是您可以声明一些类或者仅声明类的的方
    法是非安全类型的。这样的声明允许您使用指针、结构,静态地分配数组。安全码和非
    安全码都运行在同一个管理空间,这样暗示着当从安全码调用非安全码时不会陷入列集
    (marshaling)。
    小结
        C#语言从C和C++演变而来,它是给那些愿意牺牲C++一点底层功能,以获得更方便和
    更产品化的企业开发人员而创造的。C#现代、简单、面向对象和类型安全。尽管它借鉴
    了C和C++的许多东西,但是在一些诸如名字空间、类、方法和异常处理等特定领域,它
    们之间还存在着巨大的差异。
    C#为您提供了方便的功能,如垃圾收集、类型安全、版本控制,等等。仅有的"代价"就
    是,代码操作默认是类型安全的,不允许指针。光是类型安全就可以搞定了。但是,如
    果您需要指针,仍可以通过非安全码使用它们,而且当调用非安全码时,不能含有列集


    --

    ※ 来源:·BBS 水木清华站 smth.org·[FROM: 166.111.215.13]
    上一篇
    返回上一页
    回到目录
    回到页首
    下一篇


       收藏   分享  
    顶(0)
      




    ----------------------------------------------

    -----------------------------------------------

    第十二章第一节《用ROR创建面向资源的服务》
    第十二章第二节《用Restlet创建面向资源的服务》
    第三章《REST式服务有什么不同》
    InfoQ SOA首席编辑胡键评《RESTful Web Services中文版》
    [InfoQ文章]解答有关REST的十点疑惑

    点击查看用户来源及管理<br>发贴IP:*.*.*.* 2004/11/9 2:25:00
     
     GoogleAdSense
      
      
      等级:大一新生
      文章:1
      积分:50
      门派:无门无派
      院校:未填写
      注册:2007-01-01
    给Google AdSense发送一个短消息 把Google AdSense加入好友 查看Google AdSense的个人资料 搜索Google AdSense在『 Dot NET,C#,ASP,VB 』的所有贴子 点击这里发送电邮给Google AdSense  访问Google AdSense的主页 引用回复这个贴子 回复这个贴子 查看Google AdSense的博客广告
    2024/5/29 14:59:53

    本主题贴数1,分页: [1]

    管理选项修改tag | 锁定 | 解锁 | 提升 | 删除 | 移动 | 固顶 | 总固顶 | 奖励 | 惩罚 | 发布公告
    W3C Contributing Supporter! W 3 C h i n a ( since 2003 ) 旗 下 站 点
    苏ICP备05006046号《全国人大常委会关于维护互联网安全的决定》《计算机信息网络国际联网安全保护管理办法》
    78.125ms