首页 > 代码库 > C#与C及OC的不同点

C#与C及OC的不同点

其实熟悉这些语言的朋友们深知,这几个语言完全没有可比性。

由于工作需要,最近需要重温C#语言,难免会受到C和OC的基础知识影响。

此篇是本人的一个学习笔记,仅此献给有C/OC基础,需要继续学习C#的朋友们。


博文首发地址:http://blog.csdn.net/duzixi


今后不断更新,欢迎大家补充修正(最后更新日期:2014.11.6)


 第1讲 基础:常量 变量 运算符 表达式 语句
***** C#提供的基本类型更多,划分更细

***** C#里bool类型就是bool类型,严格区别于整形

***** C#中的控制台输入都是字符流,获取其它类型需要用Parse方法转化
int a = int.Parse(Console.Readline());

***** C#的声明与实现不分离
《C#本质论 (第三版)》p.121


 第2讲 分支结构
***** C#里switch case 中 switch表达式的值还可以是字符串类型

 第3讲 循环结构  数组

***** C#的数组本质是System.Array 的对象。它是所有数组类型的抽象基类型。必须进行实例化。
声明数组时,方括号 ([]) 必须跟在类型后面,而不是标识符后面,且数组的大小不是其类型的一部分。
如:
bool[], byte[], int[],  float[], double[], string[], 

*****  C#里二维数组和数组的数组(交错数组)是两个东西
二维数组定义:
string[,] names;
交错数组 (jagged array)
byte[][] scores;
http://msdn.microsoft.com/zh-cn/library/aa288453(v=vs.71).aspx

***** C#里数组可以直接赋值,但是和C一样不能直接做加减运算

 第4讲 枚举和结构体
***** C#中枚举不是一个单纯的整形常量
http://msdn.microsoft.com/zh-cn/library/cc138362.aspx

***** C#中的结构体更强大、更灵活,里面可以直接包含方法

***** C#中结构体的成员变量类型修饰符必须是public
结构可以实现接口,但它们无法继承另一个结构。 因此,结构成员无法声明为 protected
http://msdn.microsoft.com/zh-cn/library/ah19swz4.aspx

 第5讲 引用类型 字符串
***** C#有独特的引用类型,是装箱获得的
值类型装箱后会被扔到堆里
http://msdn.microsoft.com/zh-cn/library/yz2be5wk.aspx

***** C#的字符串是一个类

 第6讲 类

***** C#的类里包含方法、属性、字段、事件、委托以及内部嵌套的类等
http://msdn.microsoft.com/zh-cn/library/ms173113.aspx
一个类可包含下列成员的声明:
构造函数(Constructor)
析构函数
常量(Const)
字段(Field)
方法(Method)
属性(Property)
索引器(Indexers)
运算符(Operator)
事件(Event)
委托(Delegate)
类(Class)
接口(Interface)
结构(Struct)

***** C#里的修饰符特别丰富、可以修饰好多东西
1.访问级别、控制有效范围和权限的:public protected private internal
2.控制内存分配区域的:static const
3.声明函数参数的:ref out params
4. 虚实:virtual
http://msdn.microsoft.com/zh-cn/library/9fkccyh4.aspx

***** 访问权限

在其他选件类中可以直接在命名空间内声明的选件类,未嵌套,可以是 公开 或 内部。 默认情况下选件类是 internal

类成员,包括嵌套选件类,可以是 公开、protected internal、保护、内部或 专用。 默认情况下成员是 专用。

http://msdn.microsoft.com/zh-cn/library/0b0thckt.aspx

***** C#的属性
可以是只写的
在字段的基础上创建,属性开头字母是大写的

***** C#的函数只能在类里面定义

***** C#有密封类

***** C#有base语句
构造函数可以使用 base 关键字来调用基类的构造函数。
http://msdn.microsoft.com/zh-cn/library/ms173115.aspx

 第7讲 方法(函数)

***** C#的方法只能出现在类和结构体里

***** C#里有方法签名的概念
方法名 参数 及 参数类型
http://msdn.microsoft.com/zh-cn/library/ms173114.aspx

***** C#的函数参数是有修饰符的
ref:引用参数
out:输出参数
params:一维数组

***** C#通过析构函数释放内存资源

***** C#有虚方法
http://msdn.microsoft.com/zh-cn/library/9fkccyh4.aspx

***** C#中称之为方法签名


 第8讲 面向对象
***** C#中有继承关系的两个类分别叫基类和派生类
当基类将方法声明为 virtual 时,派生类可以用自己的实现重写该方法。 
http://msdn.microsoft.com/zh-cn/library/ms173149.aspx?sentenceGu=431ef25c6bea78755c146f18e5e213ae#mt9

***** C#的多态比较多态,有多种实现方式

 第9讲 静态类和抽象类

***** 静态类和抽象类是C#独有的

 第10讲 接口和泛型
***** C#的接口类似OC的协议
http://blog.csdn.net/byondocean/article/details/6871881


 第11讲 集合
***** C#的集合分为泛型集合和非泛型集合
http://msdn.microsoft.com/zh-cn/library/yz2be5wk.aspx


 第12讲 委托和事件
***** C#的委托类似于C的函数指针,但是类型安全,已经被封装成了一个类型

***** C#的观察者设计模式由委托和事件来实现

 第13讲 反射
***** 反射是C#独有的


总的来说,感觉C#的修饰符特别的丰富,关于修饰符的内容还在整理中。

C#与C及OC的不同点