关系
.NET平台提供环境,.NET frameWork 提供工具--->完成软件开发
类比
.NET平台 ----->中国移动互联网平台 .NET frameWork------->信号塔,提供稳定环境
1.数据类型
(1)值类型、指针类型
(2)引用类型(是一个内存位置,但不包含存储在变量中的实际数据)
(3)对象类型(装箱:值类型->对象;拆箱:对象类型->值类型 )
(4)动态类型:可存储任何类型的值在动态数据类型变量中,这些变量的类型检查在运行发生
(5)字符串(String)类型:<1>“” <2>@:将转义字符(\)当作普通字符对待
2.类型转换
3.封装
4.可空类型(Nullable)
(1) ? 单问号用于对 int、double、bool 等无法直接赋值为 null 的数据类型进行 null 的赋值
(2) ?? 双问号用于判断一个变量在为 null 的时候返回一个指定的值
6.结构和类
(1)区别:
1、结构是值类型,它在栈中分配空间;而类是引用类型,它在堆中分配空间,栈中保存的只是引用。
2、结构类型直接存储成员数据,让其他类的数据位于堆中,位于栈中的变量保存的是指向堆中数据对象的引用。
(2)适用场合:
1、当堆栈的空间很有限,且有大量的逻辑对象时,创建类要比创建结构好一些;
2、对于点、矩形和颜色这样的轻量对象,假如要声明一个含有许多个颜色对象的数组,则CLR需要为每个对象分配内存,在这种情况下,使用结构的成本较低;
3、在表现抽象和多级别的对象层次时,类是最好的选择,因为结构不支持继承。
4、大多数情况下,目标类型只是含有一些数据,或者以数据为主。
7.枚举(Enum):枚举列表中的每个符号代表一个整数值,从0开始,逐渐增大》
8.构造函数:构造函数的名称与类的名称完全相同,它没有任何返回类型
析构函数:类的名称前加上一个波浪形(~)作为前缀。用于在结束程序之前释放资源
例:
9.(1)静态变量:一个类成员为静态时,无论有多少个类的对象被创建,只会有一个该静态成员的副本。
(2)成员函数:声明为 static,这样的函数只能访问静态变量
10.C# 不支持多重继承,但可以使用接口来实现多重继承。(只有一个亲爹,但可以认几个干爹)
11.多态:“同一个函数”具有不同功能。定义几个相同名的函数,但参数类型、个数不全相同。
静态多态性中,函数的响应是在编译时发生的(函数重载、运算符重载实现)
动态多态性中,函数的响应是在运行时发生的
12.virtual和abstract:都是用来修饰父类的,通过覆盖父类的定义,让子类重新定义。
(1).virtual修饰的方法必须有实现(哪怕是仅仅添加一对大括号),而abstract修饰的方法不能实现。
(2).virtual可以被子类重写,而abstract必须被子类重写。
(3).如果类成员被abstract修饰,则该类前必须添加abstract,因为只有抽象类才可以有抽象方法。
(4).无法创建abstract类的实例,只能被继承无法实例化。
重载(overload:是提供一种机制, 相同函数名通过不同的返回值类型以及参数来表来区分的机制。
重写(override):是用于重写基类的虚方法,这样在派生类中提供一个新的方法。
13.运算符重载(一元、二元、比较运算符能够重载)
例:
14.接口:I 字母开头,默认是 public 的。
(1)接口实现:
(2)接口继承:如果一个接口继承其他接口,那么实现类就需要实现所有接口的方法
15.定义命名空间:
使用命名空间:
16.正则表达式(还需要再看看)
附:
(1)^表示字符串的开头,但它还有另外一个含义。当在一组方括号里使用 ^ 时,它表示"非"或"排除"的意思
(2)一个数字 {x} 的意思是前面的字符或字符簇只出现x次 ;一个数字加逗号 {x,} 的意思是前面的内容出现x或更多的次数 ;两个数字用逗号分隔的数字 {x,y} 表示 前面的内容至少出现x次,但不超过y次
(3)特殊字符 * 与 {0,} 是相等的,它们都代表着 0 个或多个前面的内容 。最后,字符 + 与 {1,} 是相等的,表示 1 个或多个前面的内容
17.文件的输入输出
18.特性(Attribute)
用于添加元数据。AttributeUsage、Conditional、Obsolete
19.反射(Reflection)指程序可以访问、检测和修改它本身状态或行为的一种能力
用途:
20.属性(Property):通过访问器(accessor)声明可包含一个 get 访问器、一个 set 访问器,用于获取或设置属性的值。
附:抽象类可拥有抽象属性,但是这些属性应在派生类中被实现
21.索引器(Indexer):索引器定义的时候不带有名称,但带有 this 关键字
22.委托(Delegate)
-->(其实就是帮别人做事情的人)
23.事件(Event)
发布器:是包含事件和委托定义的对象。
通过事件使用委托:---------> 在发布器类中的委托调用订阅器类中的方法处理事件
订阅器: 是接受事件并提供事件处理程序的对象。
24.泛型(Generic)
25.匿名方法
匿名方法是通过使用 delegate 关键字创建委托实例来声明的