面向对象,Object-Oriented ,简称 OO
对象,是人们要进行研究的任何事物在面向对象程序设计中的抽象。
类, 就是具有相同或相似性质的对象的抽象。
对象的属性,是对现实世界中事物特征进行的抽象。
对象的关系: 包含、继承、关联
抽象:过程抽象 、数据抽象。 (我们面向对象谈的就是数据抽象。)
一、封装
封装是指使用抽象数据类型将数据和基于数据的操作包装在一起。
二、类
1.声明类,class关键字。
访问修饰符 :public、private、internal、protected。 (公共访问所有类都可见、私有访问、同一程序集中内部类型、成员才可以访问、受保护成员在它或它的派生类中可访问。)
.NET Framework 2.0中,新的访问修饰符partial , 即在一个文件里定义一个类的某个部分,然后在另一个文件里进一步定义这个类。
2.创建对象
关键字new
三、类成员
1.字段(包含在类或结构中的对象和值)
static 静态。
readonly 只读。(只能在初始化期间或者构造函数中赋值)
2.属性
公共方法或公共属性
例子:
private double seconds;
public double Hours
{
get { return seconds/3600 }
set { seconds = value * 3600}
}
3.自动属性
在.NET 2.0中,通过声明public属性来间接访问声明为 private的字段。
例子:
private int month;
public int Month
{
get { return month; }
set { month = value; }
}
四、事件
事件是能够在代码中对其进行响应(或处理)的操作。
鼠标和键盘事件、属性事件。
以编程方式订阅事件。 += 订阅。 -=取消订阅。
五、索引器
就是一类特殊的属性,通过它们可以像引用数组一样引用自己的类。
六、方法
方法是类中包含一系列语句的代码块。
格式: 返回值类型 方法名称(参数列表)
{ 方法体语句 ...}
返回值类型,如果是void 则表示没有返回值。
通过return关键字,返回值。
方法参数,params 关键字,用于方法参数列表长度不定的情况。
ref关键字,表示引用类型参数。在方法中对参数所做的任何更改都将反映在该变量中。若要使用ref参数,则方法的定义和调用都必须显式使用ref关键字。
out关键字,表示使用引用类型参数,在方法中对参数所做的任何更改都将反映在该变量中。若要使用out参数,则方法的定义和调用都必须显式使用out关键字。
当希望方法返回多个值的时候,声明ref和out方法很有用。
七、构造函数
主要用于在创建指定类型的对象时执行类的方法。 构造函数具有与类相同的名称,它通常初始化新对象的数据成员。
不带参数的构造函数称为 默认构造函数。
特性:与类名一致、没有返回值、声明类对象时,系统自动调用构造函数,不能被显式调用、可以重载、若声明时未定义构造函数,系统会自动生成默认的构造函数(函数体为空)
八、Main方法 此处略
九、变量的作用域 局部变量、全局变量
十、方法的重载 overload 同一个类中的两个或两个以上的方法有同一个名字,只要它们的参数声明不同即可。
十一、结构方法
结构是值类型,而类是引用类型。
向方法传递结构时,结构是通过传值方式传递的,而不是作为引用传递的。
结构可以声明构造函数,但是它们必须带参数。
一个结构不能从另一个结构或类继承。
结构可以实现接口。
在结构中初始化实例字段是错误的。
System.DateTime结构
十二、委托
delegate 关键字用于声明一个引用类型,该引用类型可用于封装命名方法或匿名方法。
使用委托,就可以像操作变量一样操作方法。与委托的签名(由返回类型和参数组成)匹配的任何方法都可以分配给该委托;
可将方法作为参数进行引用的能力使委托成为定义回调方法的理想选择。
委托的特点:
1.委托类似于C++ 的函数指针,但它是类型安全的。
2.委托允许将方法作为参数进行传递。
3.委托可用于定义回调方法。
4.委托可以连接在一起,例如,可以对一个事件调用多个方法。
5.方法无需与委托签名精准匹配。
6.Visual C# 2008 中引入了匿名方法的概念,此类方法允许将代码块作为参数传递,以代替单独定义的方法。
匿名方法
如下例子,通过使用匿名方法来实例化委托
delegate void SampleDelegate (string message);
class MainClass
{
static void Main()
{ SampleDelegate d1 = delegate( string message) ; }
}
Lambda 表达式 此处略
多播委托 委托对象支持使用操作符“+”连接起来。把方法加入执行队列
对象与集合初始化器
例子:
CalendarDate calendar = new CalendarDate();
calendar.Month = 9;
calendar.Day= 18;
calendar.Year= 2009;
在VS2008中,可以简写为:
CalendarDate calendar = new CalendarDate { Month=9,Day=18,Year=2009 };