切尔斯基

冰河洗剑,绝塞传烽,江山如画雪初晴

用户操作
[即时聊天] [发私信] [加为好友]
切尔斯基ID:chelsea
137147次访问,排名595好友0人,关注者7
chelsea的文章
原创 38 篇
翻译 2 篇
转载 0 篇
评论 123 篇
切尔斯基的公告
质疑暂停, 发些以前的外传
最近评论
Warhammer Gold:metin2 yang
dofus kamas
比喻很恰当,呵呵.
suxiaoguai:敏捷有好处也有短板:
==================
如果结对的双方没有类似的知识结构,效率一定不会高。这种情况下双方之间更多的是思想上的摩擦和相互学习,不是合作解决实际问题。结对需要长时间的前期投入才能开始起作用。
==================
这是个问题,所以敏捷一定需要有公司支持这个土壤。
另外团队的文化非常重要,
hachenzhonghua:结伴比较难。
这个对企业整体文化、管理能力要求比较高。
心胸坦荡的人并不多。落井下石的人却总是不缺
iceheart:你跟某人适合xp跟另外一些人不见得适合,某个项目适合xp另外的项目不见得适合,某些环境适合xp另外的不见得适合。

脱离了具体情况的空谈都是没有意义的争论
文章分类
    收藏
      相册
      切尔分站
      切尔斯基的工作(RSS)
      切尔斯基的工具(RSS)
      切尔斯基的杂记(RSS)
      亲密爱人
      丸子(RSS)
      文学艺术
      芳村窝蛋(RSS)
      存档
      订阅我的博客
      XML聚合  FeedSky

      原创 The C# Programming Language Notes II收藏

      新一篇: The Ruby Programming Language Notes | 旧一篇: The Python Programming Language Notes

      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 节)可编写在正常执行和异常情况下都将执行的终止代码。在 C++ 中,很难在不重复代码的情况下编写这样的代码"--这个有点自吹自擂了,C++的析构函数是最好的finally块,这个说了很多遍了,不说了

      9,析构函数的异常

      特别值得注意的是在析构函数执行过程中发生的异常。如果在析构函数执行过程中发生异常且该异常未被捕获,则将终止该析构函数的执行,并调用它的基类的析构函数(如果有)。如果没有基类(如 object 类型中的情况),或者如果没有基类析构函数,则该异常将被忽略

       

      10 泛型

      不同于C++大部分实现的编译时展开(膨胀)和Java的编译时擦拭,.Net反而是运行时展开(膨胀),造成的影响有:

      • 泛型类声明中的静态变量在相同封闭构造类型(第 20.5.2 节)的所有实例之间共享,但是不会在不同封闭构造类型的实例之间共享(与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的简化形式

      发表于 @ 2006年06月27日 21:07:00|评论(loading...)|收藏

      新一篇: The Ruby Programming Language Notes | 旧一篇: The Python Programming Language Notes

      评论

      #谢谢S 发表于2006-08-02 13:05:00  IP: 222.216.81.*
      现在使用感觉功能真的很强的.
      发表评论  


      登录
      Csdn Blog version 3.1a
      Copyright © 切尔斯基