- 浏览: 117887 次
- 来自: ...
文章分类
最新评论
C# 2.0 的表达能力已经在我们的项目中得到检验,先看看1.1时哪些问题没弄明白:
Q: 4,@ 取消转义
取消字符串转义尚可理解,不过连关键字都变成普通标识了,实在看不出有多大意义
A: 与其他编程语言建立接口时很有用
.Net多语言平台, foreach 在C++中不是关键字,可以作为函数名称,那么导入到C#程序中就是 @foreach
Q: 13,属性权限
get/set好像不能设置不同的权限,比如,我想internal set,而public get,不知怎么弄
A: 现在可以了
public String Name{
get { return name; }
internal set { name = value; }
}
Q: 16,new virtual有没有意义?
A: 显式的new,virtual,override声明和隐藏规则,都旨在消除版本演化的影响,使语义不会随着父类增删方法,改变方法修饰符而变化 ("new virtual", "abstract override"属于C#的新发明)
新写一点笔记:
1,Prefer using to finally, workaround for GC + dtor
using 语句 |
static void Main() { |
2,委托
“委托的一个有趣且有用的属性在于,它不知道也不关心它所引用的方法的类;它所关心的仅是所引用的方法与委托具有相同的参数和返回类型”--函数式编程风格在面向对象语言中的完美融合 ,配之以2.0引入的匿名方法,即模拟的lambda,匿名方法可隐式转换为与之兼容的委托类型;3.0将引入真正的lambda
3,Attribute: Pointcut在代码中的手工配置
4,用户定义类型转换:Mapper Design Pattern在语言层面的支持
5, 嵌套类型
常量或类型声明会隐式地声明静态成员,即区别于Java,C#所有嵌套类型都是静态的,嵌套类型和包含它的那个类型并不具有特殊的关系,但可以访问包含它的那个类型可访问的所有成员,包括private,即类似C++的friend6,数组协变
数组协变不能扩展 value-type 的数组。例如,不存在允许将 int[] 当作 object[] 来处理的转换
7,重写显式接口成员实现
由于显式接口成员实现不能被声明为虚的,因此不可能重写显式接口成员实现。然而,有很多种方法可以绕过此限制,比如:
-
显式接口成员实现的内部完全可以调用另一个方法,只要将该方法声明为虚方法,派生类就可以重写它了
-
一个类若继承了某个接口的实现,则只要将该接口列入它的基类列表中,就可以重新实现 (re-implement) 该接口
8,finally
"在 C# 中,利用 finally 块(第 8.10<!--[if gte mso 9]><![endif]--> 节)可编写在正常执行和异常情况下都将执行的终止代码。在 C++ 中,很难在不重复代码的情况下编写这样的代码"--这个有点自吹自擂了,C++的析构函数是最好的finally块,这个说了很多遍了,不说了
9,析构函数的异常
特别值得注意的是在析构函数执行过程中发生的异常。如果在析构函数执行过程中发生异常且该异常未被捕获,则将终止该析构函数的执行,并调用它的基类的析构函数(如果有)。如果没有基类(如 object 类型中的情况),或者如果没有基类析构函数,则该异常将被忽略
10 泛型
不同于C++大部分实现的编译时展开(膨胀)和Java的编译时擦拭,.Net反而是运行时展开(膨胀),造成的影响有:
-
泛型类声明中的静态变量在相同封闭构造类型(第 20.5.2<!--[if gte mso 9]><![endif]--> 节)的所有实例之间共享,但是不会在不同封闭构造类型的实例之间共享(与C++相同,与Java不同)
-
泛型和非泛型同名类可以共存(Queue, Queue<T>),避免流血分裂(Java则是通过擦拭法来避免)
11 迭代器
正成为主流编程语言的标配,Java保持沉默,C++还只是通过标准库来支持,Python和C#则提供语法级别的支持
12 可空类型
原以为是Null Object Design Pattern在语言级别的支持,当发现“当 HasValue 为 false 时,尝试访问 Value 属性将引发异常”就知道不是那么回事了,实际上Null Object确实不容易统一实现,Dynamic Proxy有可能是潜在手段之一,不过C#的可空类型有点像专门为数据库访问做的优化;为了这个特定领域,引入专门的语言扩展,特定API的简便不知道能不能值回复杂性的增加;其实完全可以通过类库的形式来实现可空类型:Nullable<T>,为它定义到 T 的隐式转换运算符和其它必要的设施即可,实际情况也差不多如此:int? 之类的声明是System.Nullable<int>的简写,而 a ?? b更是 a == null ? b : a的简化形式
发表评论
-
The Object Primer
2004-12-11 11:21 5881,书名 被翻译成“ ... -
错误处理规范
2004-12-11 16:47 757错误处理规范 〇、概念澄清 概念 解释 错误 ... -
Java,误解为何如此之深
2005-08-24 13:50 593前几天被电话面试,问J ... -
Java:画蛇添足的编码规范
2005-09-02 13:13 607前几天公司培训编码规范: 第n条: ... -
synchronized : 规则, 推论与实践
2007-07-23 22:32 46414.3.Synchronization. Rule ... -
交互设计: 股市帮凶
2008-05-04 21:30 642同事 Y 在线操作股票时, 把"买入"点成 ... -
交互设计: 火车上的厕所
2008-05-26 17:17 606有人在动车组的厕所前等了很久, 直到乘务员路过说厕所是被锁住了 ... -
设计原则与模式: 案例介绍--CppUnit
2008-06-01 20:15 613设计原则与模式: 案例介绍--CppUnit CppUnit ... -
工作流:形参,实参,相关数据
2004-12-11 11:40 671关于形参,实参,相关数据 一、形参(FormalParame ... -
工作流:第一次发版,过程总结
2004-12-11 11:42 709交流 即时讨论:小组成员咫尺之遥,有问题立即提出并解决 ... -
工作流:第一次发版,设计总结
2004-12-11 11:43 610整体 面向接口:消息系统,持久系统等,其实现都是可替换 ... -
Beyond Workflow : An Introduction to Vitria BusinessWare
2005-09-26 10:13 803一、简介 Busines ... -
Vitria BusinessWare: 存储与访问安全
2006-03-26 15:45 746事实上,BusinessWare使用LDAP做为存储机制和 ... -
Vitria BusinessWare: 平台与软件总线
2006-04-01 12:59 838经过一段时间的使用 ... -
Vitria BusinessWare: Web Services
2006-04-01 14:30 739BusinessWare的Web Services ... -
Web Services:自洽,编码,交换模型
2006-04-01 16:02 6731, 自洽 以前曾经写过: 目前WebServi ... -
Web Services:WSDL 1.1 规范中的几个错误
2006-04-01 16:40 720读完了WSDL 1.1的规范,令人惊讶的是发现似乎例子中有几个 ... -
C++/CLI:被忽视的集成技术
2006-05-17 20:02 755十几行代码,就使一个重要的旧系统组件,完全融入了基于.Ne ... -
AJP/JK:异构Web平台的集成技术
2006-05-25 21:44 708Tomcat Connector 可以将Tomcat ... -
Vitria BusinessWare: 事件与端口
2006-05-27 17:24 656Event BusinessWare是一个事件驱动的系统 ...
相关推荐
4. **LINQ(Language Integrated Query)**:C# 3.0引入的查询表达式,使得在C#中处理数据更加直观,支持数据库、XML、集合等多种数据源的查询。 5. **动态编程**:C# 4.0引入了dynamic关键字,允许在运行时绑定...
《C#编程语言》(CHM) 是一本针对C#初学者的基础教程,它全面地介绍了C#这门强大的编程语言。C#是由微软公司开发的一种面向对象的、现代的编程语言,主要用于构建Windows应用程序、Web应用以及移动应用等。CHM格式的...
根据提供的文件信息,我们可以从《C#编程语言》这本书中提炼出以下关键知识点: ### 一、关于本书 - **作者信息**: - **Anders Hejlsberg**:微软杰出工程师,C#之父,也是Delphi、Turbo Pascal的原始开发者之一...
C# 之父 Anders Hejlsberg的力作,C# 程序员的圣经。
《C#编程语言第三版》是C#编程领域的一部权威著作,由C#语言的设计者之一Mads Torgersen等人撰写。这本书深入探讨了C#语言的核心特性,旨在帮助开发者掌握C#的最新语法和最佳实践。在C#这个标签下,我们可以找到大量...
本书是经典C#语言书Programming C#的最新版第4版。著名作者Jesse Liberty为有经验的Ⅱ从业人员快速掌握并运用这种新型语言提供了所需要的信息。本书从c#的关键字和基本概念开始介绍,并告诉你如何结合三个核心的应用...
5. **LINQ(Language Integrated Query)**:C#引入了集成查询语言,使得数据库查询和其他数据源的操作更加简洁和高效。 6. **异步编程**:C#的async/await关键字简化了异步编程,使开发者能够轻松处理并发和IO密集...
Programming Visual C# 2005 The Language Programming Visual C# 2005 The Language Programming Visual C# 2005 The Language
In just 21 days readers will learn how to use the key features of the C# programming language—not only the commands, but how to create entire programs using them within a few simple chapters....
5. 查询表达式(LINQ):Language Integrated Query,是C# 3.0的一个重要特性,允许在代码中直接编写SQL风格的查询,支持对象、数据库、XML等数据源的查询操作。 6. 遗产和接口:C# 3.0继续强化了面向对象的特性,...
C# Programming Cookbook 英文epub 本资源转载自网络,如有侵权,请联系上传者或csdn删除 本资源转载自网络,如有侵权,请联系上传者或csdn删除
A complete technical specification of the C# programming language, the third edition differs in several ways from the first two. Most notably, of course, it has been updated to cover all the new ...
Designed to give you enough familiarity in a programming language to be immediately productive, Learning C# Programming with Unity 3D provides the basics of programming and brings you quickly up to ...
《C# Programming From Problem Analysis to Program Design》第四版是一本深入浅出的C#编程教程,旨在引导读者从问题分析到程序设计的全过程。这本书专为初学者和有一定经验的程序员设计,通过全面覆盖C#语言的核心...