C#捷径教程(好评如潮的C#实战图书)
基本信息
- 原书名: Accelerated C# 2008
- 原出版社: Apress
- 作者: (美)Trey Nash [作译者介绍]
- 译者: 刘新军
- 丛书名: 图灵程序设计丛书.微软技术系列
- 出版社:人民邮电出版社
- ISBN:9787115192585
- 上架时间:2009-1-9
- 出版日期:2009 年2月
- 开本:16开
- 页码:444
- 版次:1-1
- 所属分类:
计算机 > 软件与程序设计 > C#
编辑推荐
好评如潮的C#实战图书.
汲取.NET技术精髓的捷径..
专章讲述习惯用法与设计模式...
推荐阅读
内容简介回到顶部↑
c# 3.0 提供了很多强大的特性,通过使用lambda 表达式、扩展方法和语言集成查询(linq),方便地引入了函数式编程,使c# 程序员如虎添翼。本书通过许多精彩的示例介绍了每个特性,深入浅出地讲解了c# 语言的核心概念,以及如何聪明地应用c# 的习惯用法和面向对象的设计模式来挖掘c# 和clr 的能力。
本书适合有一定编程经验的程序员阅读。
本书适合有一定编程经验的程序员阅读。
目录回到顶部↑
第1章 c#预览
1.1 c#和c++的区别
1.1.1 c#
1.1.2 c++
1.1.3 clr垃圾回收
1.2 c#程序示例
1.3 c# 2.0扩展特性概述
1.4 c# 3.0新特性概览
1.5 小结
第2章 c#和clr
2.1 clr中的jit编译器
2.2 程序集及程序集加载器
2.2.1 最小化程序的工作集
2.2.2 给程序集命名
2.2.3 加载程序集
2.3 元数据
2.4 交叉语言的兼容性
2.5 小结
第3章 c#语法概述
3.1 c#是一门强类型的语言
1.1 c#和c++的区别
1.1.1 c#
1.1.2 c++
1.1.3 clr垃圾回收
1.2 c#程序示例
1.3 c# 2.0扩展特性概述
1.4 c# 3.0新特性概览
1.5 小结
第2章 c#和clr
2.1 clr中的jit编译器
2.2 程序集及程序集加载器
2.2.1 最小化程序的工作集
2.2.2 给程序集命名
2.2.3 加载程序集
2.3 元数据
2.4 交叉语言的兼容性
2.5 小结
第3章 c#语法概述
3.1 c#是一门强类型的语言
译者序回到顶部↑
因为在学校微软技术俱乐部活动的缘故,C# Beta版一经问世我就从微软高校关系部拿到了试用版,并且在微软的支持下俱乐部的一帮人一起做了几个小项目。2003年10月,微软全球副总裁Jawad Khaki来北邮做讲座,之后有人去索取签名,一个哥们居然拿着一本《Java编程思想》上去。结果Jawad大笔一挥在扉页上写下了几个大字“C# is a better Java”。这句话正是我当时对C#的第一印象,可能也正反映了微软对C#的期望和当时业界对C#的评价。.
当然微软的雄心远不止于此,.NET才是它的战略发展方向,C#只是推动这个发展的一个独门武器。几年来,微软投入了大量的资源,把这款武器打造得越来越锋利。随着泛型、匿名方法、迭代器、分部类型/分部方法、LINQ、匿名类型、对象/集合初始化器、扩展方法、lambda表达式等一系列特性的逐步引入,C#俨然成为了特性最丰富的编程语言。
丰富的特性带来了强大的功能和高效的开发效率,但与之相伴的副作用之一就是加陡了学习曲线。一件再好的武器,如果你不能透彻掌握其奥妙玄机,后果将轻则浪费宝物,重则误伤自己。因此,除了会使手中的利器,找到一位好师父、觅得一本好宝典同样非常重要。
目前市面上有很多关于C#的图书,也有很多诸如《24小时学会XXX》、《轻松掌握XXX》的图书。刚开始,我对出版社定下的本书中文书名——《C#捷径教程》颇有微词。不过, 仔细一想,“捷径”确实最贴切原书名中Accelerated的本意。学习原本没有捷径可走,但要在有限的时间内取得最大的成效,还是有策略和方法的。本书的“捷径”体现在以下两个方面。..
1. 以相对短的篇幅浓缩了C#的几乎所有的精华,高屋建瓴,取精用弘。本书没有纠缠于繁琐的语法细节(有任何C/C++/Java语言背景的人都可以触类旁通),也没有涉及华丽的IDE操作与界面设计内容(可以通过Tutorial或Help更方便地获得),而是直接切入C#语言本身的精髓,让你最直接地感受并掌握最激动人心的特性。
2. 以简洁的语言与丰富的示例来讲解各个特性,一针见血,酣畅淋漓。作者是位资深的程序员,因此本书的行文风格都是基于程序员的角度和思维方式,使你在阅读的过程中有一种心领神会的默契之感。
当然,翻译的过程没有捷径可走。本书的面世是许多人帮助与支持的结果。
感谢编辑陈兴璐小姐。这是第二次与她合作。她一如既往地友善耐心、认真负责,保证了本书的按时按质完成。
感谢杨军、崔晓川、刘光强、李辛鹤、徐进在翻译过程中给予我的的帮助,他们的专业水平和中肯建议,使翻译润色不少。与他们的讨论交流,也让我受益匪浅。
感谢小顾同学,忍受了我长达半年深居简出的宅男生活:)。
由于时间仓促,水平有限,不足之处望各位同仁不吝赐教。
希望你在《C#捷径教程》中找到学习C#的捷径!...
刘新军
2008年11月于北京
当然微软的雄心远不止于此,.NET才是它的战略发展方向,C#只是推动这个发展的一个独门武器。几年来,微软投入了大量的资源,把这款武器打造得越来越锋利。随着泛型、匿名方法、迭代器、分部类型/分部方法、LINQ、匿名类型、对象/集合初始化器、扩展方法、lambda表达式等一系列特性的逐步引入,C#俨然成为了特性最丰富的编程语言。
丰富的特性带来了强大的功能和高效的开发效率,但与之相伴的副作用之一就是加陡了学习曲线。一件再好的武器,如果你不能透彻掌握其奥妙玄机,后果将轻则浪费宝物,重则误伤自己。因此,除了会使手中的利器,找到一位好师父、觅得一本好宝典同样非常重要。
目前市面上有很多关于C#的图书,也有很多诸如《24小时学会XXX》、《轻松掌握XXX》的图书。刚开始,我对出版社定下的本书中文书名——《C#捷径教程》颇有微词。不过, 仔细一想,“捷径”确实最贴切原书名中Accelerated的本意。学习原本没有捷径可走,但要在有限的时间内取得最大的成效,还是有策略和方法的。本书的“捷径”体现在以下两个方面。..
1. 以相对短的篇幅浓缩了C#的几乎所有的精华,高屋建瓴,取精用弘。本书没有纠缠于繁琐的语法细节(有任何C/C++/Java语言背景的人都可以触类旁通),也没有涉及华丽的IDE操作与界面设计内容(可以通过Tutorial或Help更方便地获得),而是直接切入C#语言本身的精髓,让你最直接地感受并掌握最激动人心的特性。
2. 以简洁的语言与丰富的示例来讲解各个特性,一针见血,酣畅淋漓。作者是位资深的程序员,因此本书的行文风格都是基于程序员的角度和思维方式,使你在阅读的过程中有一种心领神会的默契之感。
当然,翻译的过程没有捷径可走。本书的面世是许多人帮助与支持的结果。
感谢编辑陈兴璐小姐。这是第二次与她合作。她一如既往地友善耐心、认真负责,保证了本书的按时按质完成。
感谢杨军、崔晓川、刘光强、李辛鹤、徐进在翻译过程中给予我的的帮助,他们的专业水平和中肯建议,使翻译润色不少。与他们的讨论交流,也让我受益匪浅。
感谢小顾同学,忍受了我长达半年深居简出的宅男生活:)。
由于时间仓促,水平有限,不足之处望各位同仁不吝赐教。
希望你在《C#捷径教程》中找到学习C#的捷径!...
刘新军
2008年11月于北京
前言回到顶部↑
对熟悉其他面向对象语言的人来说,Visual C# .NET(C#)学习起来相对容易。熟悉Visual Basic 6.0的人想学一门面向对象语言,也会发现C#很容易上手。然而,尽管C#和.NET框架为创建简单应用提供了一条捷径,但为了开发复杂、健壮和容错的C#应用,你还是需要掌握很多的信息并理解怎样正确地使用它们。本书将教授你需要掌握的知识,并解释如何最好地运用这些知识来快速获得真正的C#专业技能。.
学会习惯用法和设计模式对培养和应用专业技能有不可估量的作用,本书将展示怎样使用它们来创建高效、健壮、容错和异常安全(exception safe)的应用程序。虽然Java和C++程序员对于其中的许多模式都比较熟悉,但有一些是.NET和公共语言运行库(CLR)独有的。本书后面的章节会展示如何应用这些必不可少的习惯用法和设计模式,无缝地把C#应用程序与.NET运行库集成,重点放在C# 3.0的新功能上。
设计模式记录的是许多程序员在应用程序设计中反复发现的最佳实践。事实上,.NET框架本身就实现了许多众所周知的设计模式。同样,在过去的.NET框架的三个版本和C#的两个版本中,还发现了许多新的习惯用法和最佳实践。你会看到本书详细描述了这些实践。另外,值得注意的是,宝贵的技术工具库也在不断革新。
随着C# 3.0的到来,可以使用lambda表达式、扩展方法和语言集成查询(Language Integrated Query,LINQ)方便地引入函数式编程。lambda表达式可以方便地在某个点声明和实例化函数委托(function delegate)。另外,有了lambda表达式,创建functional就是小菜一碟。functional是以函数作为参数并返回另一个函数作为返回值的函数。即使你之前可以在C#里面实现函数式编程(虽然还是有点困难),但C# 3.0里面的新语言特性提供了一个新的环境,在这里函数式编程和典型的命令式编程可以繁荣共存。LINQ允许使用这种语言的语法来表示数据查询操作(这本质上也是functional)。一旦知道了LINQ的工作原理,你就会意识到它所做的远远不止简单的数据查询,还可以用它来实现复杂的函数式编程。
.NET和CLR提供了一个独特和稳定的跨平台执行环境。C#是这个平台的首选语言。但是你会发现本书探讨的技术也适用于任何针对.NET运行时的语言。对于那些有丰富C++经验,熟悉C++规范形式(canonical form)、异常安全、资源获得即初始化(Resource Acquisition Is Initialization , RAII)、const正确性(const correctness)等概念的读者,本书说明了如何把这些概念应用于C#。对于那些有多年技术积累的Java或Visual Basic程序员,可通过本书掌握如何把这些技术有效地应用于C#。
总之,要成为一名C#专家,并不需要花几年的功夫去摸着石头过河,只需要学习正确的知识并以正确的方式来使用它们。这正是我写作本书的动机。
关于本书
本书假设你已经具备了一些面向对象语言的基本知识,比如用过C++、Java或Visual Basic .NET。因为C#语法起源于C++和Java,所以我不会花很多时间来介绍C#语法,重点讨论的是与C++或Java有显著区别的地方。如果你已经对C#有所了解,那么可以略读甚至跳过第1章~第3章。
第1章大致给出了一个简单的C#应用,并描述了C#编程环境与C++编程环境之间的基本区别。
第2章是第1章的具体展开,快速说明了C#应用程序运行的托管环境。接着介绍了程序集(assembly),它是C#代码文件编译成的基本构建块。还讲解了元数据是如何使程序集成为自我描述的。
第3章深入讲解了C#的语法。这里介绍了CLR中的两种基本类型:值类型和引用类型。还介绍了命名空间,以及如何用它来从逻辑上划分应用里的类型和功能。
第4~13章深入介绍了如何在C#程序和设计里运用习惯用法、设计模式和最佳实践。这本书尽量以逻辑顺序来安排这些章节,但还是会在其中某一章不可避免地引用后面一章涉及的技术或主题。
第4章详细讲解了如何在C#里定义类型。可以在本章学到关于CLR里值类型和引用类型的更多知识。本章还简单涉及了CLR和C#对本地接口的支持。你会发现C#里类型继承的工作原理,也会看到每个对象如何派生自System.Object。本章还包括了相当多关于托管环境以及如何在其中定义有用类型所必需的信息。本章介绍了其中很多的主题,并在随后的几章中更详细地讨论。
第5章详细介绍了接口及其在C#语言中扮演的角色。接口定义了类型可以选择实现的功能性契约。你可掌握类型实现接口的各种方法,以及接口方法被调用的时候,运行时如何选择调用哪个方法。
第6章详细介绍了将内建的C#操作符应用于自定义的类型时如何赋予其定制的功能。你将了解如何可靠地重载操作符,因为不是所有的为CLR编译代码的托管语言都能使用重载的操作符。
第7章展示了C#和CLR的异常处理功能。虽然与C++的语法相似,但创建异常安全和异常中立的代码还是颇有难度的,甚至比在本地C++中创建异常安全代码还要难一点。你会看到创建容错的、异常安全的代码根本不需要try、catch或finally指令。本章还描述了.NET 2.0运行时中新增的一些功能,允许你创建比用.NET 1.1创建的代码的容错性更好的代码。
第8章描述了字符串如何作为CLR的头等(first-class)类型及如何在C#中有效地使用它们。本章的大部分篇幅集中在.NET框架中各种类型的字符串格式化功能,以及如何让自己定义的类型通过实现IFormattable接口来具有类似的行为。另外,还介绍了.NET框架的全球化功能以及如何为.NET框架目前还不知道的文化和地区创建定制的CultureInfo。..
第9章介绍了C#中的各种数组和容器类型。你可以创建两种类型的多维数组,可以在使用容器工具类的同时创建自己的容器类型。你会看到使用C# 2.0引入的新迭代器语法定义前向、反向和双向迭代器,这样你自己的容器类型就能与foreach语句配合工作了。
第10章展示C#里的回调机制。历史上,所有可行的框架都提供了某种机制来实现回调。C#更进了一步,把回调包装到了称为委托的可调用对象中。C# 2.0提供了一种简短的语法来创建委托,这就是匿名方法。匿名方法与函数式编程里的lambda函数类似。另外,还会看到如何在委托之上构建框架来提供发布/订阅事件通知机制,允许你在设计中把事件的源头与消费者解耦。
第11章介绍C# 2.0和CLR中加入的也许是最激动人心的特性。那些熟悉C++模板的读者会发现泛型似曾相识,虽然二者存在一些本质的区别。使用泛型可以提供一个功能的壳,可以在运行时在这个壳内定义更具体的类型。泛型用于容器类型的时候最有用,它与之前.NET版本里的容器相比效率更高。
学会习惯用法和设计模式对培养和应用专业技能有不可估量的作用,本书将展示怎样使用它们来创建高效、健壮、容错和异常安全(exception safe)的应用程序。虽然Java和C++程序员对于其中的许多模式都比较熟悉,但有一些是.NET和公共语言运行库(CLR)独有的。本书后面的章节会展示如何应用这些必不可少的习惯用法和设计模式,无缝地把C#应用程序与.NET运行库集成,重点放在C# 3.0的新功能上。
设计模式记录的是许多程序员在应用程序设计中反复发现的最佳实践。事实上,.NET框架本身就实现了许多众所周知的设计模式。同样,在过去的.NET框架的三个版本和C#的两个版本中,还发现了许多新的习惯用法和最佳实践。你会看到本书详细描述了这些实践。另外,值得注意的是,宝贵的技术工具库也在不断革新。
随着C# 3.0的到来,可以使用lambda表达式、扩展方法和语言集成查询(Language Integrated Query,LINQ)方便地引入函数式编程。lambda表达式可以方便地在某个点声明和实例化函数委托(function delegate)。另外,有了lambda表达式,创建functional就是小菜一碟。functional是以函数作为参数并返回另一个函数作为返回值的函数。即使你之前可以在C#里面实现函数式编程(虽然还是有点困难),但C# 3.0里面的新语言特性提供了一个新的环境,在这里函数式编程和典型的命令式编程可以繁荣共存。LINQ允许使用这种语言的语法来表示数据查询操作(这本质上也是functional)。一旦知道了LINQ的工作原理,你就会意识到它所做的远远不止简单的数据查询,还可以用它来实现复杂的函数式编程。
.NET和CLR提供了一个独特和稳定的跨平台执行环境。C#是这个平台的首选语言。但是你会发现本书探讨的技术也适用于任何针对.NET运行时的语言。对于那些有丰富C++经验,熟悉C++规范形式(canonical form)、异常安全、资源获得即初始化(Resource Acquisition Is Initialization , RAII)、const正确性(const correctness)等概念的读者,本书说明了如何把这些概念应用于C#。对于那些有多年技术积累的Java或Visual Basic程序员,可通过本书掌握如何把这些技术有效地应用于C#。
总之,要成为一名C#专家,并不需要花几年的功夫去摸着石头过河,只需要学习正确的知识并以正确的方式来使用它们。这正是我写作本书的动机。
关于本书
本书假设你已经具备了一些面向对象语言的基本知识,比如用过C++、Java或Visual Basic .NET。因为C#语法起源于C++和Java,所以我不会花很多时间来介绍C#语法,重点讨论的是与C++或Java有显著区别的地方。如果你已经对C#有所了解,那么可以略读甚至跳过第1章~第3章。
第1章大致给出了一个简单的C#应用,并描述了C#编程环境与C++编程环境之间的基本区别。
第2章是第1章的具体展开,快速说明了C#应用程序运行的托管环境。接着介绍了程序集(assembly),它是C#代码文件编译成的基本构建块。还讲解了元数据是如何使程序集成为自我描述的。
第3章深入讲解了C#的语法。这里介绍了CLR中的两种基本类型:值类型和引用类型。还介绍了命名空间,以及如何用它来从逻辑上划分应用里的类型和功能。
第4~13章深入介绍了如何在C#程序和设计里运用习惯用法、设计模式和最佳实践。这本书尽量以逻辑顺序来安排这些章节,但还是会在其中某一章不可避免地引用后面一章涉及的技术或主题。
第4章详细讲解了如何在C#里定义类型。可以在本章学到关于CLR里值类型和引用类型的更多知识。本章还简单涉及了CLR和C#对本地接口的支持。你会发现C#里类型继承的工作原理,也会看到每个对象如何派生自System.Object。本章还包括了相当多关于托管环境以及如何在其中定义有用类型所必需的信息。本章介绍了其中很多的主题,并在随后的几章中更详细地讨论。
第5章详细介绍了接口及其在C#语言中扮演的角色。接口定义了类型可以选择实现的功能性契约。你可掌握类型实现接口的各种方法,以及接口方法被调用的时候,运行时如何选择调用哪个方法。
第6章详细介绍了将内建的C#操作符应用于自定义的类型时如何赋予其定制的功能。你将了解如何可靠地重载操作符,因为不是所有的为CLR编译代码的托管语言都能使用重载的操作符。
第7章展示了C#和CLR的异常处理功能。虽然与C++的语法相似,但创建异常安全和异常中立的代码还是颇有难度的,甚至比在本地C++中创建异常安全代码还要难一点。你会看到创建容错的、异常安全的代码根本不需要try、catch或finally指令。本章还描述了.NET 2.0运行时中新增的一些功能,允许你创建比用.NET 1.1创建的代码的容错性更好的代码。
第8章描述了字符串如何作为CLR的头等(first-class)类型及如何在C#中有效地使用它们。本章的大部分篇幅集中在.NET框架中各种类型的字符串格式化功能,以及如何让自己定义的类型通过实现IFormattable接口来具有类似的行为。另外,还介绍了.NET框架的全球化功能以及如何为.NET框架目前还不知道的文化和地区创建定制的CultureInfo。..
第9章介绍了C#中的各种数组和容器类型。你可以创建两种类型的多维数组,可以在使用容器工具类的同时创建自己的容器类型。你会看到使用C# 2.0引入的新迭代器语法定义前向、反向和双向迭代器,这样你自己的容器类型就能与foreach语句配合工作了。
第10章展示C#里的回调机制。历史上,所有可行的框架都提供了某种机制来实现回调。C#更进了一步,把回调包装到了称为委托的可调用对象中。C# 2.0提供了一种简短的语法来创建委托,这就是匿名方法。匿名方法与函数式编程里的lambda函数类似。另外,还会看到如何在委托之上构建框架来提供发布/订阅事件通知机制,允许你在设计中把事件的源头与消费者解耦。
第11章介绍C# 2.0和CLR中加入的也许是最激动人心的特性。那些熟悉C++模板的读者会发现泛型似曾相识,虽然二者存在一些本质的区别。使用泛型可以提供一个功能的壳,可以在运行时在这个壳内定义更具体的类型。泛型用于容器类型的时候最有用,它与之前.NET版本里的容器相比效率更高。
序言回到顶部↑
编程是令人愉快的。它是一个惊险刺激的历程,充满着令人烦恼的问题和解决问题之后带来的愉悦感受。在这个过程中,开发者透过编程语言这个镜头去观察遇到的问题,思考其解决方案。因此,开发者对语言的熟悉非常重要。.
开发者面对的问题是千奇百怪的,从医疗应用到保险软件,从多媒体应用到数据挖掘工具。C#紧随开发者所面对的问题的演进而演进。问题变得越来越复杂,为此语言也相应地变得更简单更强大。
C#诞生之初是为了描述运行在多种执行环境的可重用组件。在这个阶段,它确立了其自己作为描述组件和系统架构的重要语言的地位,同时也继承了C风格语言的优点并发扬光大。它的主要贡献之一是实现了一个完全面向对象类型系统,把原始类型和复杂类型的概念与垃圾回收统一在一起。..
C#的第1版是一个重大成就,而第2版的出现代表了一个决定性的时刻。随着泛型的引入,它的类型系统变得更加丰富。C#还开始提供迭代器、匿名方法等更方便简单和更优雅设计的特性。使用这些特性可以开发出更灵活更强大的框架。
C#的第3版开辟了一片新天地。它把代码和数据之间的界限变得模糊,引入了说明式的查询语法,给程序员带来了函数式编程特性。这些新增的特性使程序员能够容易地解决在处理数据过程中所遇到的困难,不管这些数据是来自内存、数据库还是Web服务器。程序员会发现这些特性给编程重新带来了乐趣。
在本书中,Trey Nash对C#语言的解说令人耳目一新。他不仅自己精通C#,还能够引导读者通过学习好好掌握C#。他用许多精彩的示例来介绍每个特性的来龙去脉,演示常用和最佳实践,使学习的过程变得轻松愉快。我相信,读者阅读本书后,肯定能写出更好的代码。...
Wes Dyer
微软公司C#编译器和语言设计组
开发者面对的问题是千奇百怪的,从医疗应用到保险软件,从多媒体应用到数据挖掘工具。C#紧随开发者所面对的问题的演进而演进。问题变得越来越复杂,为此语言也相应地变得更简单更强大。
C#诞生之初是为了描述运行在多种执行环境的可重用组件。在这个阶段,它确立了其自己作为描述组件和系统架构的重要语言的地位,同时也继承了C风格语言的优点并发扬光大。它的主要贡献之一是实现了一个完全面向对象类型系统,把原始类型和复杂类型的概念与垃圾回收统一在一起。..
C#的第1版是一个重大成就,而第2版的出现代表了一个决定性的时刻。随着泛型的引入,它的类型系统变得更加丰富。C#还开始提供迭代器、匿名方法等更方便简单和更优雅设计的特性。使用这些特性可以开发出更灵活更强大的框架。
C#的第3版开辟了一片新天地。它把代码和数据之间的界限变得模糊,引入了说明式的查询语法,给程序员带来了函数式编程特性。这些新增的特性使程序员能够容易地解决在处理数据过程中所遇到的困难,不管这些数据是来自内存、数据库还是Web服务器。程序员会发现这些特性给编程重新带来了乐趣。
在本书中,Trey Nash对C#语言的解说令人耳目一新。他不仅自己精通C#,还能够引导读者通过学习好好掌握C#。他用许多精彩的示例来介绍每个特性的来龙去脉,演示常用和最佳实践,使学习的过程变得轻松愉快。我相信,读者阅读本书后,肯定能写出更好的代码。...
Wes Dyer
微软公司C#编译器和语言设计组
媒体评论回到顶部↑
“作者的C#造诣极深,而且善于引导读者在轻松愉快的氛围中学习C#的特性。通过学习此书内容,你的C#水平必将今非昔比。”.
——Wes Dyer,微软C#开发小组成员
“我读过不下100本.NET方面的书,自己也写过几本书,但是此书精彩绝伦,远远超出了我的预期。强烈推荐!”...
——William Ryan,微软MVP
——Wes Dyer,微软C#开发小组成员
“我读过不下100本.NET方面的书,自己也写过几本书,但是此书精彩绝伦,远远超出了我的预期。强烈推荐!”...
——William Ryan,微软MVP
评论交流
共有16人开贴评论 18人参与评论 10人参与打分 查看
评价等级:



发表于:2009-9-22 16:15:00
现在看到69页,总体感觉的确不错,但问题是中文版之中包含不少的病句,错误。但愿只是我的理解力出了问题。
例如,46页,“你看到了,对任何实体而言,默认的访问修饰符都是适用于它们最严格的。”我查阅了原版英文书,对应的英文是“As you can see, access for just about anything defaults to the strictest form of access that makes sense for that entity.”这句话我想了半天,开始有点怀疑是不是作者使用机器翻译~~~
还有,68页,“要求用户记得来做这样的事都设计是一个糟糕的设计。”原英文“Requiring the user to remember to do something like that is poor design.”像我这种菜鸟都能读懂英文在说什么,但是我实在不能通顺的理解翻译过来的中文。
还有更多的地方,列举不过来了,勉强看不懂中文的地方就去翻原版来看到底是怎么回事,简直是讽刺~~~~~~
建议出版社和译者用心点,书是好书,但是翻译不敢恭维~~~别浪费了读者的期待~~~
例如,46页,“你看到了,对任何实体而言,默认的访问修饰符都是适用于它们最严格的。”我查阅了原版英文书,对应的英文是“As you can see, access for just about anything defaults to the strictest form of access that makes sense for that entity.”这句话我想了半天,开始有点怀疑是不是作者使用机器翻译~~~
还有,68页,“要求用户记得来做这样的事都设计是一个糟糕的设计。”原英文“Requiring the user to remember to do something like that is poor design.”像我这种菜鸟都能读懂英文在说什么,但是我实在不能通顺的理解翻译过来的中文。
还有更多的地方,列举不过来了,勉强看不懂中文的地方就去翻原版来看到底是怎么回事,简直是讽刺~~~~~~
建议出版社和译者用心点,书是好书,但是翻译不敢恭维~~~别浪费了读者的期待~~~
| 我要写评论 |
| 查看所有评论交流(共16条) |








点击看大图





加载中...

