partial关键字 部分类、结构、接口
======================================================
索引器是一种特殊的类成员,它能够让对象以类似数组的方式来存取,使程序看起来更为直观,更容易编写。
1、索引器的定义
直接网上拿的:
C#中的类成员可以是任意类型,包括数组和集合。当一个类包含了数组和集合成员时,索引器将大大简化对数组或集合成员的存取操作。
定义索引器的方式与定义属性有些类似,其一般形式如下:
[修饰符] 数据类型 this[索引类型 index]
{
get{//获得属性的代码}
set{ //设置属性的代码}
}
如:
public Int32 this [String s]
{
get{return 0;}
set{}
}
修饰符包括 public,protected,private,internal,new,virtual,sealed,override, abstract,extern.
数据类型是表示将要存取的数组或集合元素的类型。
索引器类型表示该索引器使用哪一类型的索引来存取数组或集合元素,可以是整数,可以是字符串;this表示操作本对象的数组或集合成员,可以简单把它理解成索引器的名字,因此索引器不能具有用户定义的名称。 例如:
class Z
{
//可容纳100个整数的整数集
private long[] arr = new long[100];
//声明索引器
public long this[int index]
{
get
{ //检查索引范围
if (index < 0 || index <= 100)
{
return 0;
}
else
{
return arr[index];
}
}
set
{
if (!(index < 0 || index <= 0))
{
arr[index] = value;
}
}
}
资料地址:http://www.cnblogs.com/lengbingshy/archive/2010/02/23/1671912.html
http://blog.csdn.net/lcl_data/article/details/5396429
=========================================================================================
virtual:
以下Employee类定义了三中不同的方法:
internal class Employee
{
//非虚实例方法
public Int32 GetYearsEmployed(){....}
//虚方法(虚暗示实例)
public Virtual String GenProgressReport(){...}
//静态方法
public static Employee Lookup(String name){..}
}
virtual 可以被重写的方法属于虚方法。
虚方法是由编译器生成Callvirt指令编译的
非虚方法是由Call指令编译的。
注意
1.编码时 尽量少用虚方法 因为调用虚方法的速度比调用非虚方法慢。
2.如果希望方法是多态的,最好的方法就是使最复杂的方法成为虚方法,使所有重载的简便方法成为非虚方法。
如例:
public class Set
{
private Int32 m_length=0;
//这个重载的简便方法是非虚的
public Int32 Find(Object Value)
{
return Find(value,0,m_length);
}
//这个重载的简便方法是非虚的
public Int32 Find(Object value,Int32 startIndex){
return Find(value,startIndex,m_length-startIndex)
}
//功能最丰富的方法是虚方法,可以被重写
public virtual Int32 Find(Object value,Int32 startIndex,Int32 endIndex)
{
//可被重写的实现放在这里。。。
}
//其他方法....
}