C#是三大主流OOP(面向对象编程)语言(C++,Java,C#)之一,它与C之间的一些差别。
C语言诞生得非常之早,C语言的目标就是比汇编方便易用,同时不要损失汇编的表达能力。所以 C 语言可以看成是“高级的汇编”语言。C语言的源代码基本上可以非常容易地对应到汇编代码,而且可以不需要什么运行时环境的支持。C的特点,简单容易编译,灵活贴近底层。所以一直到现在,一些需要直接和硬件打交道的软件都还是用 C 语言写的。总之 C 语言编写简单,更接近底层,直观得管理数据存储。
C#语言抽象层次高且基本只有一种(面向对象的),运行时支持丰富(垃圾回收等),类库丰富。所以它就是好学,易用,同时兼顾运行效率,尽量优化。C# 与 Java 类似,编译后得到的还不是机器代码,而是运行在虚拟机中的元指令。它对安全性做了更多的考虑,没有指针,不能直接操作内存,自动实现内存管理。
最直观的区别就是:C# 没有指针类型,内存自动管理;C# 有字符串类型,C 语言没有,靠字符数组或指针来存字符串;C# 中 switch 后可跟 string 类型,并且会禁止所有 switch..case 语句的失败情形,除非 case 语句后是空格,否则执行了前一个case语句就算没有 break 也会停止执行后面的 case 语句; C# 中定义数组时,数组长度可以是变量 ,而 C 语言中定义时数组长度只能是一个常量表达式,动态分配内存需要用到 molla 函数;C 语言中没有集合类型;C# 有 foreach 可用于数组和集合的遍历等。
总的来说,C 语言更底层,很多东西都需要自己 DIY,但极其灵活,功能十分强大,其精华在于指针,直接管理数据存储,面向过程编程,很多操作系统和系统软件都是用 C 语言写的;C# 则更容易上手,很多东西都已经写好,直接使用即可,避免了内存的直接管理,面向对象编程;正如一个冷笑话所讲:“C 语言:指针最好用。 C++:最好不用指针。 C#:指针是什么?”
=================================================
一、难易程度的区别。
c# 属于 .net framework 中的一个产品,简单易用,但开发出来的东西目前还需要安装运行库才能供别人使用。c 语言是一种古老难用的语言,目前可能在嵌入式系统用的比较多,另外大学会有这门课。相关的还有 c++,可以做系统的底层开发,也不容易掌握。
二、内容上的区别。
C 语言面向过程,开发非托管程序,编译成 exe是二进制可执行文件,不可跨平台。C# 面向对象,开发托管程序,编译成 exe 是中间语言,需要在 .NET 平台上进行二次动态编译,之后才能执行,可跨平台。
三、特点上的区别。
C 语言诞生得非常早,当时人们普遍还习惯用汇编语言编写软件,而且没有什么统一,通用的操作系统,基本上软件都是从0开始写的。C# 是一种安全的、稳定的、简单的、优雅的,由 C 和 C++ 衍生出来的面向对象的编程语言。它在继承 C 和 C++ 强大功能的同时去掉了一些它们的复杂特性。
===========================================================
C:面向过程,语法太麻烦,但对硬件的底层编程和对内存的管理的灵活性方面c是其他高级语言所不可及的。
C#:纯面向对象的(跟 java 很像),是 ms .net framework 的主力之一,它的代码运行是安全的,里面没有指针和引用,像 java 一样有垃圾回收机制。
语法基本没有区别,首先 C# 不必对指针进行太多的研究,然后可遗址性等,其它的区别相当大。可以说不是一个方向的。
开发环境跟开发语言也是两个不同的概念
学习 C# 并不必须有 C 语言的基础,不过,如果你学过 C 语言,那会事半功倍的,因为他们之间有很多语法是一样的。作为初学者,并没有必要先去学习 C 语言,你只需要有 C# 的完整的教程就行了。
在这里推荐基本C#好课:C#入门手册、C#微课