初识C#
C#是微软公司发布的面向对象的、运行于.NET Framework之上的高级程序设计语言。与Java有着明显不同,借鉴Delphi的特点,与COM(组件对象模型)直接集成,是微软公司 .NET windows网络框架的主角。
C#是一种语言,.net是一个平台。C#不但可以开发基于.net的应用程序,也可以开发基于WinForm的程序。. net 是 Microsoft 的 XML Web 服务平台,XML Web 服务能使应用程序在 Internet 上传输和共享数据。
特点:
1. 强类型语言,安全稳定;
2. 事件驱动、完全面向对象的可视化编程语言;
3. 便捷的面向组件编程的支持;
4. VB简单的可视化操作和C++的高运行效率的结合;
5. 托管代码和垃圾回收 (garbage collection);
// .NET ~ C# ~ ASP.NET
C#是.net平台下的一种开发语言,用于开发桌面应用程序
asp.net是开发web程序的技术
.net是平台,该平台下包含很多技术如:asp.net ado.net winform WCF
.NET框架
CLR:公共语言运行库,Common Language Runtime,.NET框架的核心组件,在操作系统的顶层并在运行期调用基类库(BCL, Base Class Library)管理程序的执行。
· 内存管理机制
· 垃圾回收机制GC (Garbage Collector)
· JIT编译器
CTS:公共类型系统,Common Type System,重要特性是所有类型都继承自公共的基类object。
基础学习
4个基础命名空间
// .NET框架中的基础类库,用于实现一些基本的类。
using System; .NET应用程序中使用的大多数基本类型
using System.Collections.Generic; 处理集合的泛型类型
using Syatem.Text; 字符串处理和编码相关的类型
using System.Linq; 提供支持使用语言集成查询(LINQ)进行查询的类和接口,用于对集合进行查询
基础概念
0. 结构 - 类
struct 是值类型,隐式密封的、不能被继承,但可以实现接口。struct 成员默认是 public,有构造函数(实例、静态),没有析构函数,不允许字段初始化。
class 是引用类型,单继承,可实现接口。class 成员默认是 private。
· 数据 成员:字段、常量;
· 函数 成员:属性、方法、事件、索引器、构造函数、析构函数、操作符;
1. 字段 - 属性 - 索引
字段 - private,属性 - public;
属性 是指定的一组2个匹配的、称为访问器 (get 和 set) 的方法。属性是函数成员,访问器只能被隐式调用,执行代码,但不为数据存储分配内存。公有属性提供对私有字段的受控访问。
索引 是一组 get 和 set 访问器,类似属性,索引是函数成员;索引通常用于访问多个数据成员,类似数组利用索引运算符;索引不能声明为 static。访问器只能被隐式调用,可以重载,参数列表必须不同。
· 索引没有名称,但 this 是必须的;
· 参数列表中至少必须声明一个参数;
ReturnType this[参数列表] {
get {...}
set {...}
}
2. 静态构造函数 - (普通的)实例构造函数
实例构造函数初始化类的每个新实例,static 构造函数初始化类层次的项目。static 构造函数不能访问类的实例成员,通常用于初始化类的静态字段,静态构造函数被系统自动调用。静态字段先于实例成员被初始化,类只能有一个 static 构造函数,不能带参数、不能有访问修饰符、也不能使用 this 访问器。
[1]. 构造函数中不能调用虚方法;
[2]. ;
[3]. ;
3. 继承
单继承。
a. 重载:同一个类内的函数,函数名相同、参数列表不同;
b. 重写(覆盖):父子类之间的函数,签名相同、返回类型相同;父类用 virtual 标识,子类用 override 标识;
c. 隐藏:默认或通过 new 显式隐藏。base.数据成员/函数名 显式访问被隐藏的成员。
· 字段:名称相同,类型相同;
· 函数:签名相同(函数名、参数列表(个数、顺序、类型、修饰符));
4. 抽象类 abstract - 接口 interface
a. 抽象类可以给出某些成员的一些实现,接口不能包含成员实现;
b. 抽象类的抽象成员可以被子类部分实现,接口的成员必须被实现类全部实现;
c. 一个类只能继承一个抽象类(类单继承),但是可以实现多个接口;
d. 类是对对象的抽象,抽象类是对类的抽象,接口是对行为的抽象;
e. 从设计角度,抽象类和接口设计的思维过程不同(相反):
抽象类 - 自底向上,接口 - 自顶向下;
- 接口 -
引用类型,接口可以继承接口,类和结构可以实现接口。接口允许访问修饰符 public、protected、internal、private,接口成员不允许访问修饰符,默认 public static。接口声明不能包含数据成员,只能包含 属性、方法、事件、索引。
类 A 实现接口 IA,将类 A 的对象引用转换为接口 IA 的引用:
a. 强制类型转换:IA ia = (IA)objA;但是若类 A 未实现接口 IA,则抛出异常。
b. as 运算符:IA ia = objA as IA;若类 A 未实现接口 IA,返回 null、不抛出异常。
实现接口的类可以从它的基类继承实现代码。类实现 2 个接口,2 个接口包含同名方法,类的单一实现就可以满足 2 个接口 或 显式实现每一个接口。同时可以分别获