title: 推荐书-C#范例精要解析
categories:
- c#
date: 2015-12-12 12:22:11
tags: C#
前言
这本书我看了一周就看完了,内容很详实,涉及到C#2.0的方方面面,是初学者的不错的教材,
里面每一节的讲解都有范例代码,我们在看书的同时把代码都自己写一遍,会加深影响,
便于自己的学习。
重点
范例
本书通过大量的范例,在详细讲解C#基本语法的基础上,介绍利用C#开发.NET应用程序所需了解的各种技巧,并完整地加入了C#2.O的新增功能,由浅入深,带领读者逐步迈向专业C#程序设计师之路。本书适合想要用C#开发.NET应用程序的读者阅读,也可供大专院校软件专业师生参考。说明:经原作者同意,本书的第24章由清华大学出版社编辑宋延清先生增补创作。其余各章均系原作者的繁体版改写的简体中文版。
特点
提供最完备的C#学习资料,适合没有任何编程基础的入门级读者;
> 对200多个工程范例逐行分析、手把手辅导,由浅入深引领,直至学会为止;
>以微软MVP视角深入阐述面向对象编程的精髓,讲解生动,令人跃跃欲试;
>摆脱窗口束缚,利用Console工程领略全套底层类库功能,代码可随意移植;
>用崭新的方式重新梳理可视化编程思想,洞悉事件、代理、绘图机制;
>全面覆盖集合、泛型、线程、数据流、网络、序列化、数据库等高级话题;
>创作和编辑细致入微,配合光盘源代码,使新手、老手都能成为行家里手。
>说明开发.NET应用程序所需了解的C#编程语言相关技术包含C#2.0新增功能和VisualC#2005速成版的介绍和操作说明全部范例均在MicrosoftVisualStudio2005环境中测试通过。
后记
回顾C#发展的历史,C# 1.0完全是模仿Java,并保留了C/C++的一些特性如struct,新学者很容易上手;C# 2.0加入了泛型,也与Java1.5的泛型如出一辙;C# 3.0加入了一堆语法糖,并在没有修改CLR的情况下引入了Linq,简直是神来之笔,虽然很多项目出于各种各样如性能之类的原因没有采用,但非常适合小型程序的快速开发,减轻了程序员的工作量,也提高了代码的可读性;C# 4.0增加了动态语言的特性,从里面可以看到很多javascript、python这些动态语言的影子。虽然越来越偏离静态语言的道路,但从另一个角度来说,这些特性也都是为了提高程序员的生产力。至于被接受与否,还是让时间来说话吧。
C#进化之道
PS:这里面还有一点版本号的小插曲——VS2008所对应的.Net Framework是3.5,C#是3.0,CLR是2.0,及其混乱,MS终于下决心在VS2010中把这三个版本号都统一成了4.0,于是CLR3不知所终……
C# 4.0
C# 4.0的主要主题是动态编程。对象的意义变得越来越“动态”,它们的结构和行为无法通过静态类型来捕获,或者至少编译器在编译程序时无法得知对象的结构和行为。例如——
a. 来自动态编程语言——如Python或Ruby——的对象
b. 通过IDispatch访问的COM对象
c. 通过反射访问的一般.NET类型
d. 结构发生过变化的对象——如HTML DOM对象
尽管C#依然是静态类型语言,但我们的目的是改善它与这些对象的交互。
另一个次要主题是与Visual Basic协同进步(co-evolution)。将来我们希望仅维护每种语言单独的特征,而重要的新特性会同时引入两种语言。它们的区别仅仅是风格和感觉上的,而不在于特性集方面。
C# 4.0中的新特性分为四组——
动态查找
动态查找允许在编写方法、运算符和索引器调用、属性和字段访问甚至对象调用时,绕过C#静态类型检查,而在运行时进行解析。
命名参数和可选参数
现在C#中的参数可以通过在成员声明中为其提供默认值来指名它是可选的。在调用该成员时,可选参数可以忽略。另外,在传入任何参数时都可以按照参数名而不是位置进行传递。
特定于COM的互操作特性
动态查找以及命名参数和可选参数都有助于使针对COM的编程不再像今天这样痛苦。在这些特性之上,我们还添加了大量其他小特性,进一步改善了互操作体验。
变性
过去,IEnumerable<string>并不是IEnumerable<object>。现在它是了——C#包含了类型安全的“协变性和逆变性(co-and contravariance)”而且通用的BCL也将利用这一特性进行更新。
动态查找
动态查找可以用统一的方式来动态调用成员。有了动态查找,当你拿到一个对象时,不用管它是来自于COM还是IronPython、HTML DOM或是反射;只需要对其进行操作即可,运行时会帮你指出针对特定的对象,这些操作的具体意义。
这给你带来了巨大的灵活性,并能极大程度地精简代码,但它伴随着一个巨大的缺点——不会为这些操作维护静态类型。在编译时,会假设动态对象支持任何操作,而如果它不支持某个操作,则只有到运行时才能得到错误。有的时候这不会有任何损失,因为对象根本不具有静态类型,而且他情况下必须在简洁和安全之间进行权衡。为了帮助进行权衡,C#的一个设计目标就是允许在每个单独的调用中选择是否使用动态行为。
类型
C# 4.0引入了一个新的静态类型,称为dynamic。当你拥有了一个dynamic类型的对象后,你“对他做的事情”只会在运行时进行解析——
C# winform
C#提供了很多控件用于开发应用程序。
C#标准控件根据其应用环境分为两类:
Windows Form控件:主要用于Windows应用程序的开发。所有的Windows控件都是从Control类中派生来的,该类包含了所有用户界面的Windows Form组件,其中也包括Form类。Control类中包括了很多位所有控件所共享的属性、事件和方法。它包含复选框、文本框、按钮、标签、图像列表等。
Web窗体控件:主要用于Web应用程序的开发。它是专门针对Asp .NET Web窗体设计的服务器控件。Web窗体控件包含在命名空间System.Web.UI.WebControls中,当用户使用Visual Studio创建Web窗体页面时,会自动在后台代码文件中添加引用该命名空间的Using语句。
.NET Compact Framework 提供了可以满足大多数设备项目需要的Windows Form控件。若要使用这些控件没有的功能,可以从公共控件派生您自己的自定义控件。可以通过定义从 Control 类或从程序集中的现有 UserControl 继承的公共类型创建自定义控件。
最简单的控件自定义是重写公共控件的方法。例如,可以重写 TextBox 控件的 OnKeyPress 继承方法,提供将输入限制为数字字符的代码。
如若觉得自定义控件过于浪费时间和复杂,
也可以从受信任的来源下载控件,并通过添加引用来导入自定义控件。支持这些自定义的.NET的控件有:ComponentOne Studio, Spread,ActiveReports、MultiRow等。