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






本文转自mfrbuaa博客园博客,原文链接:http://www.cnblogs.com/mfrbuaa/p/5331972.html,如需转载请自行联系原作者

相关文章
|
6月前
|
开发框架 前端开发 .NET
C#编程与Web开发
【4月更文挑战第21天】本文探讨了C#在Web开发中的应用,包括使用ASP.NET框架、MVC模式、Web API和Entity Framework。C#作为.NET框架的主要语言,结合这些工具,能创建动态、高效的Web应用。实际案例涉及企业级应用、电子商务和社交媒体平台。尽管面临竞争和挑战,但C#在Web开发领域的前景将持续拓展。
201 3
|
6月前
|
SQL 开发框架 安全
C#编程与多线程处理
【4月更文挑战第21天】探索C#多线程处理,提升程序性能与响应性。了解C#中的Thread、Task类及Async/Await关键字,掌握线程同步与安全,实践并发计算、网络服务及UI优化。跟随未来发展趋势,利用C#打造高效应用。
199 3
|
18天前
|
C# 开发者
C# 一分钟浅谈:Code Contracts 与契约编程
【10月更文挑战第26天】本文介绍了 C# 中的 Code Contracts,这是一个强大的工具,用于通过契约编程增强代码的健壮性和可维护性。文章从基本概念入手,详细讲解了前置条件、后置条件和对象不变量的使用方法,并通过具体代码示例进行了说明。同时,文章还探讨了常见的问题和易错点,如忘记启用静态检查、过度依赖契约和性能影响,并提供了相应的解决建议。希望读者能通过本文更好地理解和应用 Code Contracts。
30 3
|
1月前
|
安全 C# 数据安全/隐私保护
实现C#编程文件夹加锁保护
【10月更文挑战第16天】本文介绍了两种用 C# 实现文件夹保护的方法:一是通过设置文件系统权限,阻止普通用户访问;二是使用加密技术,对文件夹中的文件进行加密,防止未授权访问。提供了示例代码和使用方法,适用于不同安全需求的场景。
112 0
|
2月前
|
API C#
C# 一分钟浅谈:文件系统编程
在软件开发中,文件系统操作至关重要。本文将带你快速掌握C#中文件系统编程的基础知识,涵盖基本概念、常见问题及解决方法。文章详细介绍了`System.IO`命名空间下的关键类库,并通过示例代码展示了路径处理、异常处理、并发访问等技巧,还提供了异步API和流压缩等高级技巧,帮助你写出更健壮的代码。
43 2
|
2月前
|
安全 程序员 编译器
C#一分钟浅谈:泛型编程基础
在现代软件开发中,泛型编程是一项关键技能,它使开发者能够编写类型安全且可重用的代码。C# 自 2.0 版本起支持泛型编程,本文将从基础概念入手,逐步深入探讨 C# 中的泛型,并通过具体实例帮助理解常见问题及其解决方法。泛型通过类型参数替代具体类型,提高了代码复用性和类型安全性,减少了运行时性能开销。文章详细介绍了如何定义泛型类和方法,并讨论了常见的易错点及解决方案,帮助读者更好地掌握这一技术。
78 11
|
2月前
|
SQL 开发框架 安全
并发集合与任务并行库:C#中的高效编程实践
在现代软件开发中,多核处理器普及使多线程编程成为提升性能的关键。然而,传统同步模型在高并发下易引发死锁等问题。为此,.NET Framework引入了任务并行库(TPL)和并发集合,简化并发编程并增强代码可维护性。并发集合允许多线程安全访问,如`ConcurrentQueue<T>`和`ConcurrentDictionary<TKey, TValue>`,有效避免数据不一致。TPL则通过`Task`类实现异步操作,提高开发效率。正确使用这些工具可显著提升程序性能,但也需注意任务取消和异常处理等常见问题。
48 1
|
2月前
|
安全 数据库连接 API
C#一分钟浅谈:多线程编程入门
在现代软件开发中,多线程编程对于提升程序响应性和执行效率至关重要。本文从基础概念入手,详细探讨了C#中的多线程技术,包括线程创建、管理及常见问题的解决策略,如线程安全、死锁和资源泄露等,并通过具体示例帮助读者理解和应用这些技巧,适合初学者快速掌握C#多线程编程。
81 0