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

因为工作须要,近期须要重温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 keyword来调用基类的构造函数。
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的不同点的更多相关文章

  1. Swift基本语法学习笔记

    Swift与OC的不同点 导入框架的方式 OC使用#import \<UIKit/UIKit.h> Swift使用import UIKit 定义标识符的方式 Swift中定义标识符,必须指 ...

  2. OC 类方法,对象方法,构造方法以及instancetype和id的异同

    OC 类方法,对象方法,构造方法以及instancetype和id的异同 类方法: 类方法是可以直接使用类的引用,不需要实例化就可以直接使用的方法.一般写一些工具方法. 类方法: 声明和实现的时候,以 ...

  3. OC 入门

    OC 入门 关键词正确写法: Xcode 错误的写法: xcode iPhone 错误的写法:IPhone iOS 错误的写法:IOS OC 全称: Objective-C 错误的写法:Object- ...

  4. 黑马程序员——OC语言Foundation框架 (2) NSArray NSSet NSDictionary\NSMutableDictionary

    Java培训.Android培训.iOS培训..Net培训.期待与您交流! (以下内容是对黑马苹果入学视频的个人知识点总结) (一)NSArray 1>NSArray :不可变数组 ①创建方法 ...

  5. iOS - OC NSKeyedArchiver 数据归档

    前言 @interface NSKeyedArchiver : NSCoder @interface NSKeyedUnarchiver : NSCoder 在 OC 语言中,归档是一个过程,即用某种 ...

  6. OC小结

    #import <Foundation/Foundation.h>#import "Person.h"int main(int argc, const char * a ...

  7. Swift基本语法以及与OC的比较

    一.注释: 1.单行注释和OC一致. 2.块注释中有与OC不同点:可以嵌套注释 二.常量和变量: 1.常量:初始化后可读不可写 let 2.变量:初始化后可读可写 var //不需要指定类型,系统会自 ...

  8. OC修饰词 - 内存管理

    <招聘一个靠谱的 iOS>—参考答案(上) 说明:面试题来源是微博@我就叫Sunny怎么了的这篇博文:<招聘一个靠谱的 iOS>,其中共55题,除第一题为纠错题外,其他54道均 ...

  9. OC加强-day01

    #pragma mark - 00 知识回顾 1.@property + 类型 + 属性名 :执行的结果 1>在类的.m里面生成一个_属性名的属性 2>生成 _属性名 这个属性的set/g ...

随机推荐

  1. Codeforces Round #336 (Div. 2) D. Zuma

    Codeforces Round #336 (Div. 2) D. Zuma 题意:输入一个字符串:每次消去一个回文串,问最少消去的次数为多少? 思路:一般对于可以从中间操作的,一般看成是从头开始(因 ...

  2. 监听iOS检测屏幕旋转状态,不需开启屏幕旋转-b

    -(void)rotation_icon:(float)n { UIButton *history_btn= [self.view viewWithTag:<#(NSInteger)#>] ...

  3. QT窗口渐现效果,窗口震动效果,鼠标移动窗口

    //窗口渐现效果void MainWindow::closeWindowAnimation() //关闭窗口效果 { QPropertyAnimation *animation = new QProp ...

  4. jquery - 通过点击切换文字内容

    今天要写一个简单的显示/隐藏效果,本以为是挺简单的事儿,没想到还真因为基本功不扎实遇到了问题,这里跟大家分享一下. 百度了很多方法,精简能用的干货实在太少,最后还是通过去查jq的官方api才找到了解决 ...

  5. UML类图的6中关系

    引用自: http://blog.csdn.net/tianhai110/article/details/6339565 UML类图分为如下四种关系: 1.  泛化 (Generalization)  ...

  6. bootstrap table 服务器端分页例子分享

    这篇文章主要介绍了bootstrap table 服务器端分页例子分享,需要的朋友可以参考下 1,前台引入所需的js 可以从官网上下载 复制代码代码如下: function getTab(){var ...

  7. complex(x):创建一个复数

    使用python可以实现将一个整数或者浮点数转换为一个复数: 演示如下: >>> # 演示复数函数:complex(x) ... >>> x = complex(1 ...

  8. [Codeforces Round #254 div1] C.DZY Loves Colors 【线段树】

    题目链接:CF Round #254 div1 C 题目分析 这道题目是要实现区间赋值的操作,同时还要根据区间中原先的值修改区间上的属性权值. 如果直接使用普通的线段树区间赋值的方法,当一个节点表示的 ...

  9. hdu 3394 Railway

    这是一道用tarjin求双连通分量的题: 其中,不需要修的道路就是桥的数目: 在图的每个极大环中,如果点的数目小于边的数目,显然这个环中含有子环,并且这个环的边数就是这个环中有冲突的边的数目: 如果点 ...

  10. Tmux:终端复用器

    转自Tmux:终端复用器 Tmux 是一个 C 语言编写的终端,它能够在单一窗口中同时访问和控制多个终端.它是一个类似于GNU Screen 的工具.使用它,用户可以在 Linux 系统上管理多个任务 ...