C#基础学习笔记(中)
2010-02-22 13:10
525 查看
第十课:索引器
1.索引器比类数组效率高
2.索引器提供了把数组封装到类中的方法,可以更好的提高数据安全性。
3.索引器比数组更为灵活,可以使用字符传作为索引值(使用Hashtable)
4.索引器可以重载
语法实例
class SampleCollection<T> //带索引器的泛型类
{
private T[] arr = new T[100];
public T this[int i]
{
get
{
return arr[i];
}
set
{
arr[i] = value;
}
}
}
第十一课:委托(delegate)
11-1
委托是一种引用方法的类型。一旦为委托分配了方法,委托将与该方法具有完全相同的行为。委托方法的调用可以像其他任何方法一样,具有参数和返回值,如下面的示例所示:
1.语法实例:委托是隐含的静态方法
delegate void EatDelegate(string food);
EatDelegate zs = new EatDelegate(zsSell);
zs("西瓜");
2.委托链
EatDelegate eat;
eat = zs+ls+ww; eat-=ww; eat+=ww;
3.匿名方法建立委托
EatDelegate eat = null
eat+=delegate(string food){Console.WriteLine("张三卖"+food)};
eat+=delegate(string food){Console.WriteLine("李四买"+food)};
eat+=delegate(string food){Console.WriteLine("王五偷"+food)};
eat("西瓜");
4.把委托作为方法的参数进行传递
eatTogeter("西瓜",zs,ls,ww)
第十二课:事件
事件发行者(Publisher)
事件订阅者(Subscriber)
事件声明
public delegate void Publish(); //声明委托作为事件代理
public event Publish OnPublish; //声明事件
定义事件的四个步骤
1.在事件发行者中定义一个事件,event关键字
2.在事件发行者中触发事件,先判断事件是否为空(委托链是否为空)
3.在事件订阅者中定义事件处理程序,处理程序必须与委托类型相同(有相同的返回这和参数)
4.向事件发行者订阅一个事件
.NET Framework事件设计准则
1.事件的命名准则应使用PascalCasing命名方式
2.声明delegate时,使用void类型作为返回值,EventName事件的事件委托是EventNameEventHandler
事件接受两个传入参数,一律命名为sender和e
3.定义一个提供事件数据的类。对类以EventNameEventArgs进行命名,从System.EventArgs派生该类,
然后添加所有事件特定成员。
public delegate void EventNameEventHandler(object sender,EventNameEventArgs e);
4.如果事件不需要传递任何数据,也要声明两个参数,e参数可以直接使用系统提供的System.EventArgs类。
如果需要传递参数则要从System.EventArgs继承一个类,并把数据放在里面。
public delegate void EventNameEventHandler(object sender,EventArgs e);
public event EventNameEventHandler EventName;
5.在引发事件的类中提供一个受保护的方法,以OnEventName进行命名。在该方法中引发该事件
protected virtual void OnEventName(EventArgs e)
{
if(EventName!=null)
{
EventName(this,e);
}
}
第十三课:虚方法 virtual 类的多态
1.new关键字 派生类的实例新建了一个同名的方法,实例中存在N个同名方法但功能不同,可以通过派生类和基类的类型转换分别访问
2.virtual override 派生类实例重写了自身所继承的基类的方法,使实例中存在多个同名同功能的方法,可以通过派生类和基类的类型转换分别访问
3.通过动态绑定(晚绑定)实现基类实例的多态。
4.base关键字调用基类的方法base.F();
第十四课:抽象类 abstract
1.声明语法
abstract class A
{
protected int _x;
abstract public int X; //抽象属性
{
get;
set;
}
abstract public void F(); //抽象方法
}
2.抽象类的构造函数
3.使用抽象类数组实现多态 A[] a = new A[3]
当所有子类使用相同功能时倾向使用虚方法,使用base调用
若子类没有相同的功能则使用抽象类
第十五课:接口
声明语法:
interface IDrivingLicence
{
void GetLicence(); //隐含具有public属性
}
class Teacher:IDrivingLicence
{
public void GetLicence() //必须使用public
{
//实现语句
}
}
接口成员
属性、方法、事件、索引器
1.索引器比类数组效率高
2.索引器提供了把数组封装到类中的方法,可以更好的提高数据安全性。
3.索引器比数组更为灵活,可以使用字符传作为索引值(使用Hashtable)
4.索引器可以重载
语法实例
class SampleCollection<T> //带索引器的泛型类
{
private T[] arr = new T[100];
public T this[int i]
{
get
{
return arr[i];
}
set
{
arr[i] = value;
}
}
}
第十一课:委托(delegate)
11-1
委托是一种引用方法的类型。一旦为委托分配了方法,委托将与该方法具有完全相同的行为。委托方法的调用可以像其他任何方法一样,具有参数和返回值,如下面的示例所示:
1.语法实例:委托是隐含的静态方法
delegate void EatDelegate(string food);
EatDelegate zs = new EatDelegate(zsSell);
zs("西瓜");
2.委托链
EatDelegate eat;
eat = zs+ls+ww; eat-=ww; eat+=ww;
3.匿名方法建立委托
EatDelegate eat = null
eat+=delegate(string food){Console.WriteLine("张三卖"+food)};
eat+=delegate(string food){Console.WriteLine("李四买"+food)};
eat+=delegate(string food){Console.WriteLine("王五偷"+food)};
eat("西瓜");
4.把委托作为方法的参数进行传递
eatTogeter("西瓜",zs,ls,ww)
第十二课:事件
事件发行者(Publisher)
事件订阅者(Subscriber)
事件声明
public delegate void Publish(); //声明委托作为事件代理
public event Publish OnPublish; //声明事件
定义事件的四个步骤
1.在事件发行者中定义一个事件,event关键字
2.在事件发行者中触发事件,先判断事件是否为空(委托链是否为空)
3.在事件订阅者中定义事件处理程序,处理程序必须与委托类型相同(有相同的返回这和参数)
4.向事件发行者订阅一个事件
.NET Framework事件设计准则
1.事件的命名准则应使用PascalCasing命名方式
2.声明delegate时,使用void类型作为返回值,EventName事件的事件委托是EventNameEventHandler
事件接受两个传入参数,一律命名为sender和e
3.定义一个提供事件数据的类。对类以EventNameEventArgs进行命名,从System.EventArgs派生该类,
然后添加所有事件特定成员。
public delegate void EventNameEventHandler(object sender,EventNameEventArgs e);
4.如果事件不需要传递任何数据,也要声明两个参数,e参数可以直接使用系统提供的System.EventArgs类。
如果需要传递参数则要从System.EventArgs继承一个类,并把数据放在里面。
public delegate void EventNameEventHandler(object sender,EventArgs e);
public event EventNameEventHandler EventName;
5.在引发事件的类中提供一个受保护的方法,以OnEventName进行命名。在该方法中引发该事件
protected virtual void OnEventName(EventArgs e)
{
if(EventName!=null)
{
EventName(this,e);
}
}
第十三课:虚方法 virtual 类的多态
1.new关键字 派生类的实例新建了一个同名的方法,实例中存在N个同名方法但功能不同,可以通过派生类和基类的类型转换分别访问
2.virtual override 派生类实例重写了自身所继承的基类的方法,使实例中存在多个同名同功能的方法,可以通过派生类和基类的类型转换分别访问
3.通过动态绑定(晚绑定)实现基类实例的多态。
4.base关键字调用基类的方法base.F();
第十四课:抽象类 abstract
1.声明语法
abstract class A
{
protected int _x;
abstract public int X; //抽象属性
{
get;
set;
}
abstract public void F(); //抽象方法
}
2.抽象类的构造函数
3.使用抽象类数组实现多态 A[] a = new A[3]
当所有子类使用相同功能时倾向使用虚方法,使用base调用
若子类没有相同的功能则使用抽象类
第十五课:接口
声明语法:
interface IDrivingLicence
{
void GetLicence(); //隐含具有public属性
}
class Teacher:IDrivingLicence
{
public void GetLicence() //必须使用public
{
//实现语句
}
}
接口成员
属性、方法、事件、索引器
相关文章推荐
- .Net学习笔记----2015-07-21(C#基础复习07,关键字、访问修饰符)
- 黑马程序员_C#基础知识学习笔记:条件语句
- .Net学习笔记----2015-07-22(C#基础复习10,面向对象2个小练习)
- 1.C#基础学习笔记3---C#字符串(转义符和内存存储无关)
- 黑马程序员之C#编程基础学习笔记:提示用户输入密码,如果密码是“888888”,则提示正确,否则要求再输入一次,如果密码是“888888”则提示正确,否则提示错误。
- 黑马程序员之C#编程基础学习笔记:用while continue实现计算1到100之间的除了能被7整除之外所有整数的和。
- 黑马程序员之C#编程基础学习笔记:将一个字符串数组的元素的顺序进行反转。
- [黑马程序员]c#基础学习笔记
- c#基础学习小笔记
- C# 基础学习笔记
- C#学习笔记(基础知识回顾)之值类型与引用类型转换(装箱和拆箱)
- C#基础学习笔记
- C#学习笔记8:HTML和CSS基础学习笔记
- 黑马程序员-学习笔记1—c#基础知识。。。
- 2012-04-02 C#基础学习笔记(2)
- 2012-04-12 C#基础学习笔记(9)
- 2012-04-14 C#基础学习笔记(11)
- C#基础语法:Base关键字学习笔记
- unity3d基础学习笔记16:C#Socket应用
- C#学习笔记(二十一):使用文件基础