C#的学习,是配合unity3D而一起学习的,接下来将记录一些学习过程中的心得体会,以及一些笔记。
C#是微软创建的面向对象的,简洁安全的程序语言。以C/C++为语言基础,开发的环境是visual studio,最新版本是C#4.0
C#必须在net.framework上运行,其包括公共语言运行库,net.framework类库
接下来介绍一些基本概念:
类:将具有同一性质的的对象抽象成一个类,是一种逻辑抽象概念,可以包含各种成员变量,比如:字段,常量和方法
对象:对象是具体的事物,是类的实例,通过对象可以调用类的实例字段和方法
方法:它是类的一个成员,是包含一系列语句的代码块,可以改变对象的状态
Main()方法,称之为主方法,是所有程序运行的入口,其余的方法分为有参数和无参数两种被调用,如果调用的是由参数的函数,那么在调用的时候参数要进行传递
命名空间:定义了一个声明区域,提供了一种将一组名称与另一组名称进行区分的方法,一个命名空间的声明的名称不会与另一个命名空间的相同名称冲突,使用using引入命名空间
C#扩展
继承性:一个类含有多个的子类,子类比父类更加的具体化,并且具有更多的行为和属性
多态性:一个类在不同的方法中被调用,能够呈现不同的结果
接口:接口和类是类似的,但是接口仅仅是描述一种规范,不具体实现这些规范
C#类型的分类
值类型:它是变量直接包含数据,储存的是数据,它的值不是null,类型一般是结构类型或者枚举类型
引用类型:它的变量只对其储存的数据进行引用,储存的是访问地址
指针类型:只用在不安全的代码中,一般不常用
1.值类型的基础是System.ValueType
3.3引用类型
引用类型的变量也成为对象,有六种类型:
(1)对象类型
(2)字符串类型
(3)类类型
(4)数组类型
(5)接口类型
(6)委托类型
在使用引用类型的变量的之前,要先判断该变量的值是不是null。如果是的话就不能直接访问
1.类类型:支持继承机制
2.对象类型:内置的引用类型,即System.object
3.字符串类型:表示零或者更多的unicode字符组成的序列,对应着System.string,使用双引号创建,一旦被创建它的创建的内存中的内容就不能被修改,要改变值只能够重新分配一块新的内存
4.数组类型:在声明数组的时候,元素类型之后要紧跟着中括号
5.接口类型:接口只是一种数据结构,可以声明数据成员和函数成员,它只能声属性,方法和事件,但是不能实现这些属性,方法和事件
6.委托类型:它能够引用一个或者多个的方法,能够将方法作为参数进行传递,并且还可以定义回调方法
3.4装箱和拆箱
作用:值类型和引用类型的值的相互转换
引用类型总被分配在托管堆上,值类型被分配在堆栈上
1.装箱:将值类型转换为引用类型,具体过程是:首先分配一个对象实例,然后将值类型的值复制到该实例中,对于引用实例来说,装箱前后都共享同一个实例
四种常见的装箱:
(1)值类型到object类型
(2)值类型到System.ValueType类型
(3)值类型到值类型实现的接口类型
(4)枚举类型到System.Enum类型
2.拆箱:将引用类型转换为值类型,具体的过程是:检查改对象实例是否为给定值类型的一个装了箱的值,将值从实例中复制出来(比装箱多了检查那一步)
四种常见的拆箱:
就是把前面的装箱的过程反过
System.ValueType的三种方法:
(1)Equals():判定当前的实例和指定的对象是否相等
(2)GetHashCode():返回当前实例的哈希代码
(3)ToString():返回当前的变量的字符串形式
2.整数类型
(1)Int 整数的32位,范围是-2^32~2^32-1
(2)Long 整数的64位,范围是-2^64~2^64-1
(3)Char 16位的unicode,可以隐式的转换为整数,定义的时候要用单引号括起来
3.浮点类型
两种浮点类型:单精度浮点(float)和双精度浮点(double)
非数字的时候被缩写成Nan
在直接的书写float类型的时候,要在数值的后面加上f或者F
在直接的书写double类型的时候,要在数值的后面加上d或者D
4.decimal类型
表示财务计算和货币计算,表示128位的计算
在浮点型和decimal之间不存在隐式的转换,因为后者比前者的精度更高, 但是范围更小
在书写的时候需要在后面加上m
不支持有符号的0,无穷大和Nan
5.bool类型
布尔类型只有两种值:true或者false
布尔类型和其他值之前不存在任何标准转换
6.枚举类型
把一组相同类型,表达固定含义的数据作为一个集合放到一起
一般包含一个或者多个枚举值,每个枚举值之间用逗号隔开,默认的基础类 型是Int
7.结构类型
是一组相关信息组合成的单一实体