c#学习
1,namespace,using不如package,import。命名空间别名,::,global::,alias,这些干啥呢,为了一点点的灵活性一个补丁接着一个。 java的ide让文件路径和package名称对应,简化了程序员的工作,不用选择了,package不能用相对路径访问子package单元。c#的这种灵活性我觉得没必要。
2,string,String2种写法,我有选择焦虑症
3,partial是好东西,为生成代码而生。对静态语言来说生成代码简直是标配。这个感觉非常好,因为基本上目的明确,你明确声明这个为partial。不怕这种灵活性。
但感觉扩展函数有点过了,估计主要是c#3为引入linq准备的机制,用来实现写dsl很酷,但易被滥用。
java8也加入default methods,来方便引入类似linq的stream。但java8是不允许放到不同文件里的啊
c#的扩展函数可以放到任意文件里,这个灵活性有点吓人。
4,访问级别默认private比java的默认package好。
5,static class不错,scala用object。java中没有对应的。但内嵌class不包含外部对象引用会不会不方便?
6,yield return搞迭代器不错,跟python迭代器一样了,很酷
7,值对象,又一个选择焦虑,这个对象不大,但用struct还是class呢?struct提供的那一点locality性能优势和复制劣势如何取舍?
struct A
{
private int a;
public A(int i) : this()
{
a = i;
}
}
可以直接A a;struct默认会有个无参构造函数,也就是说没有immutable的struct。初见也有点出人意料。真的有必要要struct吗?
8,property,不用生成getter,setter。简洁不少,最常用的估计是{get; private set;},就是set时占用了个value关键词。
9,delegate,本来要2个名字现在只要一个。java中的interface Runnable { void run() },变成了Action。本质上都是在模仿函数式编程中的函数,通过只有一个方法的接口来模拟高阶函数。
delegate少了个名字但引入了个新的概念和关键词。感觉亏了。不如java。
后来也都引入了lambda表达式。结合type inference。综合了lisp,schema这些函数语言的能力和静态类型的编译时检查。
10,event,a调用b,a依赖于b,能b依赖于a吗?依赖倒置对模块化设计来说很关键,订阅发布模式。event提供了语言级支持。结合lambda和method reference(java这么叫的),用这个写ui程序很爽。我觉得这个值得引入这个概念和占用一个关键词。
11,对象和集合的初始化,在需要常量集合,builder模式时挺有用的,并且还可以嵌套初始化,最后的数据格式挺漂亮,类似带类型信息的json。c# object notation。跟匿名类型格式有一样。
12,Nullable<T>,可空的值类型。引用类型永远可空。这不对称啊。应该是引用类型不可空。Nullable<T>这里的T可是值类型也可是引用类型。Tony-Hoare在微软啊,怎么允许c#的引用可为null?
13,Linq语法。这个为什么??我实在不懂,为了跟sql类似搞个这种东西出来,那种流式(链式)api不是挺爽吗?
14,可选参数,命名实参。java选择了不予支持,支持可选参数能省掉几个构造函数,但可能会引诱人写出比需求更多的构造接口。命名实参让形参的名字也关键起来了,java用builder模式部分解决这个问题,但有还是要好的。
15,enum只能数值,这个太狭隘了吧。不如java的enum。java enum就是instance数量限定的类。singlton模式用enum实现
c#学习,主要和java对比
对“c#学习,主要和java对比”的回应
《深入理解C#(第2版)》热门书评
-
一本值得所有开发人员看看的书
27有用 1无用 飞林沙 2012-01-20
先说.NET开发人员,我认为本书和CLR via C#是两本.NET程序员必读的书,这两本书有着不同的倾向。CLR via C#更加倾向于来用C#剖析CLR的原理和行为,而本书相对来说更加实用,把C#1.0到4.0中“先进”的特性婉婉道来,更关键的是,这本书不仅仅是简单地罗列C#中每一项特性,而是会...
-
转发深入解析C#精彩书评
3有用 1无用 互动出版网 2010-06-24
深入解析C#精彩书评本书详细信息页面地址:http://www.china-pub.com/196689这是一本纯粹的C#语言的书,和.NET Framework 关系不大,和CLR 关系不大。正如本书的前言作者所说,作者本身的意图就是讲解C#语言,使每个喜爱C#的程序员能够得心应手的工作,最后这本...
-
讲得比较透
2有用 6无用 myan 2008-10-21
C#无好书。这本书算是目前见到的还不错的。一般的C#书,包括那些大部头的红皮书,和Jesse Liberty的所谓经典,实在是非常之浅,学到手的那点C#也就是能拿来写点组装代码,深入一些的东西都不知道。这本书算是讲得比较深入了,而且作者尽量去分析了语言设计的动机,这个是非常好的做法。缺点是太罗嗦,外...
-
一本不可错过的经典
2有用 0无用 白若水 2012-03-15
C#这门语言一出来就有好多不同的声音,我们用着,但甚至还自卑着。究竟我们知道的有多少,对常用的概念我理解了多少这就很难说了。比如说“泛型”我很习惯用,但是大多时候,大多人只是习惯着这种方式,它的好处已经有足够多的书说了,如果问有什么弱点,相信C#er会愣住,似乎从来没有想过。当我们思想没有到达那个境...
-
学习技术较好的一种方式
2有用 0无用 催眠 2010-04-20
这本书只关注C#语言本身,而没有涉及.NET Framework或ASP.NET、WPF这样的特定领域的应用。简单地说,本书关注的是C#2和C#3的新特性。C#2的那些特性的好处比较容易理解,C#3的那些就不那么明了,等到对LINQ有了全面了解了,才会对这些特性有更好的认识。介绍这些特性的书籍和文章...
书名: 深入理解C#(第2版)
作者: [英] Jon Skeet
出版社: 人民邮电出版社
原作名: C# in Depth, Second Edition
译者: 朱永光 | 姚琪琳 | 周靖
出版年: 2012-1
页数: 445
定价: 79.00元
装帧: 平装
ISBN: 9787115269249