`
chelsea
  • 浏览: 117858 次
  • 来自: ...
社区版块
存档分类
最新评论

The C# Programming Language Notes II

    博客分类:
 
阅读更多

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() {
using (TextWriter w = File.CreateText("test.txt")) {
w.WriteLine("Line one");
w.WriteLine("Line two");
w.WriteLine("Line three");
}
}

 

2,委托

“委托的一个有趣且有用的属性在于,它不知道也不关心它所引用的方法的类;它所关心的仅是所引用的方法与委托具有相同的参数和返回类型”--函数式编程风格在面向对象语言中的完美融合 ,配之以2.0引入的匿名方法,即模拟的lambda,匿名方法可隐式转换为与之兼容的委托类型;3.0将引入真正的lambda

 

3,Attribute: Pointcut在代码中的手工配置

 

4,用户定义类型转换:Mapper Design Pattern在语言层面的支持

 

5, 嵌套类型

常量或类型声明会隐式地声明静态成员,即区别于Java,C#所有嵌套类型都是静态的,嵌套类型和包含它的那个类型并不具有特殊的关系,但可以访问包含它的那个类型可访问的所有成员,包括private,即类似C++的friend

6,数组协变

数组协变不能扩展 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 C# Programming Language (Covering C# 4.0) 4th Edition

    4. **LINQ(Language Integrated Query)**:C# 3.0引入的查询表达式,使得在C#中处理数据更加直观,支持数据库、XML、集合等多种数据源的查询。 5. **动态编程**:C# 4.0引入了dynamic关键字,允许在运行时绑定...

    The C# Programming Language(CHM)

    《C#编程语言》(CHM) 是一本针对C#初学者的基础教程,它全面地介绍了C#这门强大的编程语言。C#是由微软公司开发的一种面向对象的、现代的编程语言,主要用于构建Windows应用程序、Web应用以及移动应用等。CHM格式的...

    The C# Programming Language.pdf

    根据提供的文件信息,我们可以从《C#编程语言》这本书中提炼出以下关键知识点: ### 一、关于本书 - **作者信息**: - **Anders Hejlsberg**:微软杰出工程师,C#之父,也是Delphi、Turbo Pascal的原始开发者之一...

    The C# Programming Language Third Edition.chm

    C# 之父 Anders Hejlsberg的力作,C# 程序员的圣经。

    The C# Programming Language, Third Edition

    《C#编程语言第三版》是C#编程领域的一部权威著作,由C#语言的设计者之一Mads Torgersen等人撰写。这本书深入探讨了C#语言的核心特性,旨在帮助开发者掌握C#的最新语法和最佳实践。在C#这个标签下,我们可以找到大量...

    Programming C#中文版(第四版) PDF-1

    本书是经典C#语言书Programming C#的最新版第4版。著名作者Jesse Liberty为有经验的Ⅱ从业人员快速掌握并运用这种新型语言提供了所需要的信息。本书从c#的关键字和基本概念开始介绍,并告诉你如何结合三个核心的应用...

    The Csharp Programming Language

    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 Programming Visual C# 2005 The Language

    Teach Yourself the C# Language in 21 Days

    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....

    The c sharp programming language 3e

    5. 查询表达式(LINQ):Language Integrated Query,是C# 3.0的一个重要特性,允许在代码中直接编写SQL风格的查询,支持对象、数据库、XML等数据源的查询操作。 6. 遗产和接口:C# 3.0继续强化了面向对象的特性,...

    C# Programming Cookbook epub

    C# Programming Cookbook 英文epub 本资源转载自网络,如有侵权,请联系上传者或csdn删除 本资源转载自网络,如有侵权,请联系上传者或csdn删除

    The_CSharp_Programming_Language_Third_Edition

    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 ...

    Learning C# Programming with Unity 3D 2014.pdf

    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(4th)

    《C# Programming From Problem Analysis to Program Design》第四版是一本深入浅出的C#编程教程,旨在引导读者从问题分析到程序设计的全过程。这本书专为初学者和有一定经验的程序员设计,通过全面覆盖C#语言的核心...

Global site tag (gtag.js) - Google Analytics