C++、Java开发者如何上手C#编程

曹老师,您好!请问下Java程序员学习c#难度大吗?需要注意的几个点是什么?

Java还是比较类似C#的,这里列举一些C#特有,Java没有或者不太相同的语法特点:
(1)C#有委托、事件,对应Java的语法是那种只有一个方法的接口,比如说,Java中创建线程,传Runable,C#直接传线程执行的方法作为委托就可以了。Java在定义事件的时候用那种XXX
Listener匿名实现一个接口,C#直接使用event
(2)C#有属性,对应Java的getter/setter,但是更简单。
(3)C#在函数传递的时候允许按引用传参数,有ref out关键字,Java没有。
(4)C#的LINQ对应Java 8的Stream API,但是不完全相同,需要重点学习下。
(5)C#使用Pinvoke机制调用COM对象、C++等语言编写的API,这些在开发中很常用,对应Java的JNI技术,但是C#的更好用。
(6)C#的内部类和Java的内嵌类不同,C#的内部类不会自动实例化
(7)和Java不同,C#的string可以用==比较
(8)其它一些有用但是Java没有的语法,比如dynamic关键字、async/await、yield return、索引器(Indexer)、运算符重载(重载类型转换运算符)、指针、可空类型、??运算符……

建议你阅读《深入理解C#》,上面会详细介绍一些C#特有的语法,另外在msdn里有完整的语言指南,学会了语法,看源代码才比较容易。接下来可以学习一些.NET特有的库,比如ASP.NET、WPF、Winforms、WCF、SignalR等等,基本可以上手。