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#的修饰符特别的丰富,关于修饰符的内容还在整理中。

时间: 2024-08-13 17:47:25

C#与C及OC的不同点的相关文章

swiftDay01笔记 --swift和OC的不同点 && swift的基础语法

1.创建对象 带圆括号 * OC:      alloc initWithXXX 方法 * Swift:   (xxx:) //OC : //UIView *view = [UIView alloc]init]; //Swift : let view = UIView(frame: CGRect(x: 0, y: 0, width: 100, height: 100)) 2.方法调用   用点 * OC:     [UIColor redColor]; * Swift    UIColor.re

黑马程序员——OC语言基本语法知识foundation

1.结构体:NSRange .NSPoint(CGPoint). NSSize(CGSize). NSRect(CGRect) NSRange :表示范围,有两个成员变量:location ,length 例如:@“I love you”求出love的范围 int main() { NSRange r1= NsMakeRange{2,4}; return 0; } 例如:查找出某个字符串在str中的范围 NSString *str = @"I love you"; NSRanger r

016-类与对象-OC笔记

学习目标 1.[理解]对象在内存中的存储 2.[理解]nil和NULL 3.[了解]#pragma mark分组导航标记 4.[理解]方法与函数 5.[掌握]多文件开发 6.[掌握]对象和方法 7.[掌握]对象和属性 一.对象在内存中的存储 类加载: 当程序启动时,会加载项目中所有的类和分类,而且加载后会调用每个类和分类的+load方法,而且只会调用一次.并且类一旦加载到内存,就不会被回收,直到程序结束的时候才会被回收.这个过程就叫做类加载. 当第一次使用某个类创建对象的时候,就会调用当前类的+

OC语法8——@class关键字

@class关键字: 在当前类中若要引用其他类的对象作成员变量(Book  *book),我们以前采用的方式是 #import "Book.h" 但 #import "Book.h" 的意思是把整个Book.h文件拷贝进来.但是我们的需求是只要告诉编译器Book是个类就行了,所以写#import可以,但是效率不高. 为此,OC提供了个专门的关键字@class. @class  Book;只是给编译器声明Book是个类! @class Book; @class和#im

黑马程序员-OC总结

------- IOS培训.android培训.java培训.期待与您交流! ---------- 1.import的作用  impor是导入外部文件或框架,跟include功能相同,但是import的优点是可以防止重复导入. 2.说一下面向对象,面向对象有哪些特性,分别说一下 面向对象:面向对象简称OOP,在解决问题时我们只关心解决此方法的工具,也就是对象,不关心解决此方法的过程. 特性:有三个特性: 封装:封装是为了防止外界直接访问或修改对象的成员变量,提高了程序安全性. 继承:子类继承父类

OC汇总

(一) (1)import带预处理,防止重复包含,include需要手写. (2)import是引入,@class是声明这个类. (3)Foundation/Foundation.h包含了其他大量的头文件. (4)类方法无法访问到成员变量,但是好处很多,当不依赖成员变量的时候,多用类方法. (5)对象new出来后做了三件事.分配空间,初始化成员变量,返回这个对象.初始化的时候,如果成员变量是基本类型,初始化0,字符串初始化null. 变量是保存在堆区的,对象是保存在代码区的,指针是存放在栈区的

iOS开发之oc(十九)--Foundation(4) NSSet

NSSet作用:存放的是没有顺序的对象 NSSet和NSArray的对比 1> 共同点 •都是集合,都能存放多个OC对象 • 只能存放OC对象,不能存放非OC对象类型(基本数据类型:int.char.float等,结构体,枚举) •本身都不可变,都有一个可变的子类 2> 不同点 •NSArray有顺序,NSSet没有顺序 代码示例 #import <Foundation/Foundation.h> int main() { NSMutableSet *s = [NSMutableS

C和OC的基础语法(易混淆的概念知识)

List 0. 深复制与浅复制, NSObject万能指针.id指针.instancetype区别,单例import.include.@class的区别 strong 与 weak 区别 #define  和  typedef的区别, static 与  extern 区别,@required与@optional 区 别,@private.@protected .@public.@package区别 变量的命名规则以及规范(4规则,2规范) 数据类型转换 printf与scanf,自增自减,逻辑

Oc(类和对象)(ClassAndObjict)

main函数 // //  main.m //  2-2 LessonClassAndObject // //  Created by lanouhn on 15/2/2. //  Copyright (c) 2015年 lanouhn. All rights reserved. // //import引用系统的头文件用 <>, 引用自定义类的头文件用 "" #import <Foundation/Foundation.h> #import "Car.