C#概述

来源:互联网 发布:android小项目源码下载 编辑:程序博客网 时间:2024/04/27 22:56

虽然用C#写了有些时间代码,但总感觉还是挺空的,没底。好吧,那就从零开始,先来看看C#的概述,一步步扎实的走!!

 

那么先来总结几个疑问:

1、    C#是什么?

2、    C#和C、C++的区别?

3、    C#的优缺点是什么?

4、    .NET是什么?

5、    C#值类型和引用类型

不知道大家有什么疑问,至少我感觉挺乱的!!

 

第一个问题:

C#是什么?

C#是微软公司发布的一种面向对象的、运行于.NeT之上的高级程序设计语言(为什么高级,是因为它站在巨人的肩膀上)。到这里,又出现了面向对象,它是干嘛的?传统的程序设计(面向过程)主张将程序看着一系列函数的集合,或者直接对电脑下达的指令;面向对象设计则可以相对理解为不直接对电脑下达指令,通过一个对象获取、处理数据,然后本对象传递给其他对象数据,对电脑下达指令。

面向对象程序设计中的每一个对象都应该能够接受数据、处理数据并将数据传达给其它对象,因此它们都可以被看作一个小型的机器,即对象

起初,是专指在程序设计中采用封装、继承、多态等设计方法。

 

第二个问题:

C#和C、C++的区别?

C++虽然主要是以C的基础发展起来的一门新语言,但C++却不是C的替代品,也不是C的升级版,C++一开始被称为带类的C,C++完全兼容C的语法,C++支持了封装、继承和多态,C#是从C和C++派生出的语言。C++和C是兄弟关系(时间上是父子关系),C#是C和C++的孩子(继承了他们的优点)。C是面向过程、C++和C#是面向对象。

CC++有指针,但是C#没有指针概念,C没有对象的概念,C++C#有,一般用cC++开发底层接口比较好,C#不好用,但C#在开发一些应用程序和Web时,那很很有优势

(高级语言)c#相当于你只需要学会开车,你不需要去关心车是怎么造的

(高级语言)C和C++相当于连造车带开车都要会

(低级语言)汇编语言相当于你连造车的每个零件都要会造

(低级语言)机器语言相当于你连零件从挖矿到冶炼都要会

从性能效率考虑C最高、从开发效率考虑C#最高


第三个问题:

C#的优缺点是什么?

优点:

语法简单,不允许直接操作内存,去掉了指针操作

彻底的面向对象设计,封装、继承和多态

与WEB紧密结合,C#支持大多数的Web标准,如HTML、XML、SOAP等

强大的安全性机制,可以消除软件开发中常见的错误(如语法错误),.NET提供的垃圾回收器能够帮助开发者有效地管理内存资源

兼容性,因为C#遵循.NET的公共语言规范(CLS),从而能够保证与其他语言开发的组件兼容

灵活的版本处理技术,C#内置了版本控制功能,更容易开发和维护

完善的错误、异常处理机制,使程序更加稳健

缺点:

必须依赖于.NET Framework,要版本配对否则无法运行

无法写底层程序


第四个问题:

.NET是什么?

提供一个一致的面向对象的编程环境

.NET 是 Microsoft XMLWeb services 平台。用来实现XMLWeb ServicesSOA(面向服务的体系结构service-orientedarchitecture)和敏捷性的技术。XML Web services 允许应用程序通过 Internet 进行通讯和共享数据,而不管所采用的是哪种操作系统、设备或编程语言

.NET应用是一个使用.NET Framework类库来编写,并运行于公共语言运行时CommonLanguage Runtime之上的应用程序,为开发者提供一系列API。

.NET Framework是一个框架,包括CLR(公共语言运行时)和.NET 基本类库, 是用.NET语言编写的程序运行的基本支撑。即要想在某台计算机上运行.NET编写的程序,必须事先要安装.NET Framework。

可以这么理解。它就是一个中间件,这个中间件将.NET高级语言转成机器语言。

Unity发布应用程序,会将.NET的dll文件进行打包进应用程序,安装时会进行自动安装。


第五个问题:

值类型和引用类型

一、值类型,C#的所有值类型均隐式派生自System.ValueType:

(1)结构体:struct(直接派生于System.ValueType);

数值类型:

(2)整 型:sbyte(System.SByte的别名),short(System.Int16),int(System.Int32),long (System.Int64),byte(System.Byte),ushort(System.UInt16),uint (System.UInt32),ulong(System.UInt64),char(System.Char);

(3)浮点型:float(System.Single),double(System.Double);

(4)用于财务计算的高精度decimal型:decimal(System.Decimal)。

(5)bool型:bool(System.Boolean的别名);

(6)用户定义的结构体(派生于System.ValueType)。

(7)枚举:enum(派生于System.Enum);

可空类型(派生于System.Nullable<T>泛型结构体,T实际上是System.Nullable<T>的别名)。

值类型(Value Type),值类型实例通常分配在线程的堆栈(stack)上,并且不包含任何指向实例数据的指针,因为变量本身就包含了其实例数据

 

二、引用类型,C#有以下一些引用类型:

(1)数组(派生于System.Array)

用户用定义的以下类型:

(2)类:class(派生于System.Object);

(3)接口:interface(接口不是一个“东西”,所以不存在派生于何处的问题。Anders在《C#Programming Language》中说,接口只是表示一种约定[contract]);

(4)委托:delegate(派生于System.Delegate)。

(5)object(System.Object的别名);

(6)字符串:string(System.String的别名)。

 

三、两者区别

引用类型与值类型相同的是,结构体也可以实现接口;

引用类型可以派生出新的类型,而值类型不能;

引用类型可以包含null值,值类型不能(可空类型功能允许将 null 赋给值类型);

引用类型变量的赋值只复制对对象的引用,而不复制对象本身。而将一个值类型变量赋给另一个值类型变量时,将复制包含的值

 



0 0
原创粉丝点击