《Beginning C# Objcets》学习笔记

  11年8月底从android平台转为windows phone平台的开发负责人,以前从未学习过C#,由于在android平台上开发优秀,部门经理让我尝试一下;对以技术为主的我而言,积累的知识和项目经验也可以尝试一下多平台了,以开阔技术视野,对比学习,而且Java和C#都是基于虚拟机的语言,是一个不错的选择,学习过程做一个笔记:

《Beginning C# Objcets》不错的基础入门书籍:一个星期左右快速阅读,熟悉基本语法,将C#一些用法与Java做类比学习,如下:

1.char 为16位unicode类型;Java中尽量少用;

2.输出Consele.WriteLine("log")==System.out.println("log")
3.using == import;namespace==package;默认使用全局命名空间;System 命名空间类似Java中java.包的命名空间;
4.string、int、bool为预定义的System命名空间中的类型String等类的别名;new String("str")方式不允许,写成String str = "str";@开头可以加入转义字符;可用数组[]操作;
String类的==比较的是值,其它预定义类比较的是引用,建议使用Object.ReferenceEquals(obj1,obj2)比较的对象引用/句柄;obj1.Equals(obj2)在不同类中可以被override,根据不同类的定义不同,比较值;
obj.ToString()简单返回对象类型的全名;
5.static void Main()方法大写,方法命名大写字母开头,公有属性开头为大写字母;
6.术语:句柄==引用;
7.getter/setter方法可用property代替,public string Name { get{return name;} set {name = value} },Name将private属性的name首字母大写,参数名value由编译器传入;
8.方法中局部变量声明后需初始化,不会被默认初始化;类字段默认初始化为0/null,由类构造器初始化;
9.关联:学生 修 课程
链接:具体学生实例 修 具体课程实例
10.继承:冒号 特殊化specialization :普遍化generalization
方法覆盖:virtual声明、override实现、base
方法隐藏--非virtual方法覆盖:new,返回类型可以不同;非多态,只调用base类中方法;abstract方法不能被隐藏;
11.overload:不同方法签名
12.Collections:基本类型int等也作为对象存储引用;
枚举器IEnumerator、MoveNext()、Current
foreach(Object obj in objs)
可用[]的数组操作

SortedList 有序列表;
Set 集合,不允许有重复对象引用
Dictionary 字典,key-value; Hashtable
13.多态==继承+override
14.interface:方法不能有public、abstract
15.static:只能通过类名+点调用,static属性命名私有的canel方式小写开头,方便写Property,公有的Pascal方式大写字母开头;static方法不能override,也不能abstract;
16.const常量:默认为static,不能加static,声明时赋给可以编译时得到计算结果的值;
17.csc /t:library dll.cs 生成dll.dll库;
csc /t:exe exe.cs 生成exe可执行文件
csc exe.cs /r:dll.dll 动态链接dll库生成exe可执行文件exe
/main 指定程序入口文件
/out 指定编译输出exe、dll文件名
18.微软中间字节码语言MSIL==Java字节码
.NET公共运行时CLR==Java运行环境JRE虚拟机
.NET框架类库--FCL
19.exception:C#编译器不强制进行异常处理;
20.调用类中其它构造函数--:this(arg...)或者:base(arg...)
21.typeof==instanceof
22.元注解[obsolete] == @deprecated
23.FileStream(filename, FileMode):字节流-->StreamReader.ReadLine()等方法缓冲读取;

原文地址:https://www.cnblogs.com/toven/p/2277661.html