1
using
System;
2
using
System.Collections.Generic;
3
using
System.Text;
4![](/Images/OutliningIndicators/None.gif)
5
namespace
CSharpFoundationStudy
6![](/Images/OutliningIndicators/ExpandedBlockStart.gif)
{
7![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
/**//*
8
* abstract virtual new override 关键字
9
* abstract 修饰符可以用于类、方法、属性、事件和索引器,表示其为抽象成员
10
* abstract 不可以和 static 、virtual 一起使用
11
* 声明为 abstract 成员可以不包括实现代码,但只要类中还有未实现的抽象成员(即抽象类),那么它的对象就不能被实例化,通常用于强制继承类必须实现某一成员
12
*
13
* 如果父类方法没有加virtual关键字,即不是一个虚方法,则在子类中只能隐藏基类方法,而不能覆盖。
14
* 如果父类方法加了virtual关键字,即它是一个虚方法,在子类中一样可以隐藏。
15
* 如果子类实现了父类相同的方法(相同的方法名称及签名),而没有new,在编译时会报警,但编译仍然能够通过!
16
* 调用父类方法:base.方法名()
17
* abstract类是一个抽象类,不能被实例化
18
*/
19![](/Images/OutliningIndicators/InBlock.gif)
20![](/Images/OutliningIndicators/ContractedSubBlock.gif)
抽象基类#region 抽象基类
21
public abstract class BaseAbstract
22![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
23
public abstract string Attribute
24![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
25
set;
26
get;
27
}
28![](/Images/OutliningIndicators/InBlock.gif)
29
public void GFunction(string value)
30![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
31
Console.WriteLine("General Function in Abstract Base Class:" + value);
32
}
33![](/Images/OutliningIndicators/InBlock.gif)
34
public virtual void VFunction(string value)
35![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
36
Console.WriteLine("Virtual Function in Abstract Base Class:" + value);
37
}
38![](/Images/OutliningIndicators/InBlock.gif)
39
public abstract void AFunction(string value);
40![](/Images/OutliningIndicators/InBlock.gif)
41
public abstract event EventHandler Event;
42![](/Images/OutliningIndicators/InBlock.gif)
43
public abstract char this[int index]
44![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
45
get;
46
}
47
}
48
#endregion
49![](/Images/OutliningIndicators/InBlock.gif)
50![](/Images/OutliningIndicators/ContractedSubBlock.gif)
继承类#region 继承类
51
public class DerivedInstance : BaseAbstract
52![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
53
private string attribute;
54![](/Images/OutliningIndicators/InBlock.gif)
55
public override string Attribute
56![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
57
get
58![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
59
return attribute;
60
}
61
set
62![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
63
attribute = value;
64
}
65
}
66![](/Images/OutliningIndicators/InBlock.gif)
67
//Error: CSharpFoundationStudy.BaseAbstract.GFunction(string) 未被标记为virtual abstract 无法进行重写
68
//public override void GFunction(string value){ }
69![](/Images/OutliningIndicators/InBlock.gif)
70
//Warning: 隐藏了继承的成员 如果是有意隐藏,请使用关键字 new
71
//public void GFunction(string value) { }
72![](/Images/OutliningIndicators/InBlock.gif)
73
public new void GFunction(string value)
74![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
75
base.GFunction(value);
76
Console.WriteLine("General Function in Base Class is Hidden with keyword new:" + value);
77
}
78![](/Images/OutliningIndicators/InBlock.gif)
79
public override void VFunction(string value)
80![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
81
base.VFunction(value);
82
Console.WriteLine("Virtual Function Override in Derived Class:" + value);
83
}
84![](/Images/OutliningIndicators/InBlock.gif)
85
public override void AFunction(string value)
86![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
87
Console.WriteLine("Abstract Function Override in Derived Class:" + value);
88
attribute = value;
89
//调用委托
90
if (Event != null)
91![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
92
Event(this, new EventArgs());
93
}
94
}
95![](/Images/OutliningIndicators/InBlock.gif)
96
public override char this[int index]
97![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
98![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
/**//*
99
* String类
100
* String.Chars 属性
101
* 获取此实例中位于指定字符位置的字符
102
* public char this [int index] { get; }
103
*/
104![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
get
{ return attribute[index]; }
105
}
106![](/Images/OutliningIndicators/InBlock.gif)
107![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
/**//*
108
* EventHandle is delegate 委托
109
* 委托是一个定义签名的类型,即方法的返回值类型和参数列表类型。
110
* 可以使用委托类型来声明一个变量,该变量可以引用与委托签名相同的所有方法。
111
* 事件处理程序委托的标准签名定义一个没有返回值的方法
112
* 其第一个参数的类型为 Object,它引用引发事件的实例
113
* 第二个参数从 EventArgs 类型派生,它保存事件数据。如果事件不生成事件数据,则第二个参数只是 EventArgs 的一个实例。否则,第二个参数为从 EventArgs 派生的自定义类型,提供保存事件数据所需的全部字段或属性
114
*/
115
public override event EventHandler Event;
116
}
117
#endregion
118![](/Images/OutliningIndicators/InBlock.gif)
119
public class Test
120![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
121
public static void OnFunction(object sender, EventArgs e)
122![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
123![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
/**//*
124
* From: http://www.cnblogs.com/anytao/ [你必须知道的.NET] 第一回:恩怨情仇:is和as
125
* as VS is 类型安全
126
* 类型转换包括显示转换和隐式转换,在.NET中类型转换的基本规则如下:
127
* 任何类型都可以安全的转换为其基类类型,可以由隐式转换来完成;
128
* 任何类型转换为其派生类型时,必须进行显示转换,转换的规则是:(类型名)对象名;
129
* 使用GetType可以取得任何对象的精确类型;
130
* 基本类型可以使用Covert类实现类型转换;
131
* 除了string以外的其他类型都有Parse方法,用于将字符串类型转换为对应的基本类型;
132
* 值类型和引用类型的转换机制称为装箱(boxing)和拆箱(unboxing)。
133
*
134
* is/as操作符,是C#中用于类型转换的,提供了对类型兼容性的判断,从而使得类型转换控制在安全的范畴,提供了灵活的类型转换控制
135
* is的规则如下:
136
* 检查对象类型的兼容性,并返回结果,true或者false;
137
* 不会抛出异常;
138
* 如果对象为null,则返回值永远为false。
139
*
140
* as的规则如下:
141
* 检查对象类型的兼容性,并返回结果,如果不兼容就返回null;
142
* 不会抛出异常;
143
* 如果结果判断为空,则强制执行类型转换将抛出NullReferenceException异常。
144
*/
145
DerivedInstance instance = sender as DerivedInstance;
146
if (instance != null)
147![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
148
for (int i = 0; i < instance.Attribute.Length; i++)
149![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
150
Console.WriteLine(instance[i]);
151
}
152
}
153
}
154
public static void Main()
155![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
156
DerivedInstance instance = new DerivedInstance();
157
instance.Event += new EventHandler(OnFunction);
158
instance.GFunction("simply-zhao 2008/1/20");
159
instance.VFunction("simply-zhao 2008/1/20");
160
instance.AFunction("simply-zhao 2008/1/20");
161
Console.ReadLine();
162
}
163
}
164
}
165
![](/Images/OutliningIndicators/None.gif)
2
![](/Images/OutliningIndicators/None.gif)
3
![](/Images/OutliningIndicators/None.gif)
4
![](/Images/OutliningIndicators/None.gif)
5
![](/Images/OutliningIndicators/None.gif)
6
![](/Images/OutliningIndicators/ExpandedBlockStart.gif)
![](/Images/OutliningIndicators/ContractedBlock.gif)
![](https://www.cnblogs.com/Images/dot.gif)
7
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
![](/Images/OutliningIndicators/ContractedSubBlock.gif)
8
![](/Images/OutliningIndicators/InBlock.gif)
9
![](/Images/OutliningIndicators/InBlock.gif)
10
![](/Images/OutliningIndicators/InBlock.gif)
11
![](/Images/OutliningIndicators/InBlock.gif)
12
![](/Images/OutliningIndicators/InBlock.gif)
13
![](/Images/OutliningIndicators/InBlock.gif)
14
![](/Images/OutliningIndicators/InBlock.gif)
15
![](/Images/OutliningIndicators/InBlock.gif)
16
![](/Images/OutliningIndicators/InBlock.gif)
17
![](/Images/OutliningIndicators/InBlock.gif)
18
![](/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
19
![](/Images/OutliningIndicators/InBlock.gif)
20
![](/Images/OutliningIndicators/ContractedSubBlock.gif)
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
21
![](/Images/OutliningIndicators/InBlock.gif)
22
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
![](/Images/OutliningIndicators/ContractedSubBlock.gif)
![](https://www.cnblogs.com/Images/dot.gif)
23
![](/Images/OutliningIndicators/InBlock.gif)
24
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
![](/Images/OutliningIndicators/ContractedSubBlock.gif)
![](https://www.cnblogs.com/Images/dot.gif)
25
![](/Images/OutliningIndicators/InBlock.gif)
26
![](/Images/OutliningIndicators/InBlock.gif)
27
![](/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
28
![](/Images/OutliningIndicators/InBlock.gif)
29
![](/Images/OutliningIndicators/InBlock.gif)
30
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
![](/Images/OutliningIndicators/ContractedSubBlock.gif)
![](https://www.cnblogs.com/Images/dot.gif)
31
![](/Images/OutliningIndicators/InBlock.gif)
32
![](/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
33
![](/Images/OutliningIndicators/InBlock.gif)
34
![](/Images/OutliningIndicators/InBlock.gif)
35
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
![](/Images/OutliningIndicators/ContractedSubBlock.gif)
![](https://www.cnblogs.com/Images/dot.gif)
36
![](/Images/OutliningIndicators/InBlock.gif)
37
![](/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
38
![](/Images/OutliningIndicators/InBlock.gif)
39
![](/Images/OutliningIndicators/InBlock.gif)
40
![](/Images/OutliningIndicators/InBlock.gif)
41
![](/Images/OutliningIndicators/InBlock.gif)
42
![](/Images/OutliningIndicators/InBlock.gif)
43
![](/Images/OutliningIndicators/InBlock.gif)
44
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
![](/Images/OutliningIndicators/ContractedSubBlock.gif)
![](https://www.cnblogs.com/Images/dot.gif)
45
![](/Images/OutliningIndicators/InBlock.gif)
46
![](/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
47
![](/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
48
![](/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
49
![](/Images/OutliningIndicators/InBlock.gif)
50
![](/Images/OutliningIndicators/ContractedSubBlock.gif)
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
51
![](/Images/OutliningIndicators/InBlock.gif)
52
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
![](/Images/OutliningIndicators/ContractedSubBlock.gif)
![](https://www.cnblogs.com/Images/dot.gif)
53
![](/Images/OutliningIndicators/InBlock.gif)
54
![](/Images/OutliningIndicators/InBlock.gif)
55
![](/Images/OutliningIndicators/InBlock.gif)
56
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
![](/Images/OutliningIndicators/ContractedSubBlock.gif)
![](https://www.cnblogs.com/Images/dot.gif)
57
![](/Images/OutliningIndicators/InBlock.gif)
58
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
![](/Images/OutliningIndicators/ContractedSubBlock.gif)
![](https://www.cnblogs.com/Images/dot.gif)
59
![](/Images/OutliningIndicators/InBlock.gif)
60
![](/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
61
![](/Images/OutliningIndicators/InBlock.gif)
62
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
![](/Images/OutliningIndicators/ContractedSubBlock.gif)
![](https://www.cnblogs.com/Images/dot.gif)
63
![](/Images/OutliningIndicators/InBlock.gif)
64
![](/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
65
![](/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
66
![](/Images/OutliningIndicators/InBlock.gif)
67
![](/Images/OutliningIndicators/InBlock.gif)
68
![](/Images/OutliningIndicators/InBlock.gif)
69
![](/Images/OutliningIndicators/InBlock.gif)
70
![](/Images/OutliningIndicators/InBlock.gif)
71
![](/Images/OutliningIndicators/InBlock.gif)
72
![](/Images/OutliningIndicators/InBlock.gif)
73
![](/Images/OutliningIndicators/InBlock.gif)
74
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
![](/Images/OutliningIndicators/ContractedSubBlock.gif)
![](https://www.cnblogs.com/Images/dot.gif)
75
![](/Images/OutliningIndicators/InBlock.gif)
76
![](/Images/OutliningIndicators/InBlock.gif)
77
![](/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
78
![](/Images/OutliningIndicators/InBlock.gif)
79
![](/Images/OutliningIndicators/InBlock.gif)
80
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
![](/Images/OutliningIndicators/ContractedSubBlock.gif)
![](https://www.cnblogs.com/Images/dot.gif)
81
![](/Images/OutliningIndicators/InBlock.gif)
82
![](/Images/OutliningIndicators/InBlock.gif)
83
![](/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
84
![](/Images/OutliningIndicators/InBlock.gif)
85
![](/Images/OutliningIndicators/InBlock.gif)
86
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
![](/Images/OutliningIndicators/ContractedSubBlock.gif)
![](https://www.cnblogs.com/Images/dot.gif)
87
![](/Images/OutliningIndicators/InBlock.gif)
88
![](/Images/OutliningIndicators/InBlock.gif)
89
![](/Images/OutliningIndicators/InBlock.gif)
90
![](/Images/OutliningIndicators/InBlock.gif)
91
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
![](/Images/OutliningIndicators/ContractedSubBlock.gif)
![](https://www.cnblogs.com/Images/dot.gif)
92
![](/Images/OutliningIndicators/InBlock.gif)
93
![](/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
94
![](/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
95
![](/Images/OutliningIndicators/InBlock.gif)
96
![](/Images/OutliningIndicators/InBlock.gif)
97
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
![](/Images/OutliningIndicators/ContractedSubBlock.gif)
![](https://www.cnblogs.com/Images/dot.gif)
98
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
![](/Images/OutliningIndicators/ContractedSubBlock.gif)
99
![](/Images/OutliningIndicators/InBlock.gif)
100
![](/Images/OutliningIndicators/InBlock.gif)
101
![](/Images/OutliningIndicators/InBlock.gif)
102
![](/Images/OutliningIndicators/InBlock.gif)
103
![](/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
104
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
![](/Images/OutliningIndicators/ContractedSubBlock.gif)
![](https://www.cnblogs.com/Images/dot.gif)
105
![](/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
106
![](/Images/OutliningIndicators/InBlock.gif)
107
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
![](/Images/OutliningIndicators/ContractedSubBlock.gif)
108
![](/Images/OutliningIndicators/InBlock.gif)
109
![](/Images/OutliningIndicators/InBlock.gif)
110
![](/Images/OutliningIndicators/InBlock.gif)
111
![](/Images/OutliningIndicators/InBlock.gif)
112
![](/Images/OutliningIndicators/InBlock.gif)
113
![](/Images/OutliningIndicators/InBlock.gif)
114
![](/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
115
![](/Images/OutliningIndicators/InBlock.gif)
116
![](/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
117
![](/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
118
![](/Images/OutliningIndicators/InBlock.gif)
119
![](/Images/OutliningIndicators/InBlock.gif)
120
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
![](/Images/OutliningIndicators/ContractedSubBlock.gif)
![](https://www.cnblogs.com/Images/dot.gif)
121
![](/Images/OutliningIndicators/InBlock.gif)
122
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
![](/Images/OutliningIndicators/ContractedSubBlock.gif)
![](https://www.cnblogs.com/Images/dot.gif)
123
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
![](/Images/OutliningIndicators/ContractedSubBlock.gif)
124
![](/Images/OutliningIndicators/InBlock.gif)
125
![](/Images/OutliningIndicators/InBlock.gif)
126
![](/Images/OutliningIndicators/InBlock.gif)
127
![](/Images/OutliningIndicators/InBlock.gif)
128
![](/Images/OutliningIndicators/InBlock.gif)
129
![](/Images/OutliningIndicators/InBlock.gif)
130
![](/Images/OutliningIndicators/InBlock.gif)
131
![](/Images/OutliningIndicators/InBlock.gif)
132
![](/Images/OutliningIndicators/InBlock.gif)
133
![](/Images/OutliningIndicators/InBlock.gif)
134
![](/Images/OutliningIndicators/InBlock.gif)
135
![](/Images/OutliningIndicators/InBlock.gif)
136
![](/Images/OutliningIndicators/InBlock.gif)
137
![](/Images/OutliningIndicators/InBlock.gif)
138
![](/Images/OutliningIndicators/InBlock.gif)
139
![](/Images/OutliningIndicators/InBlock.gif)
140
![](/Images/OutliningIndicators/InBlock.gif)
141
![](/Images/OutliningIndicators/InBlock.gif)
142
![](/Images/OutliningIndicators/InBlock.gif)
143
![](/Images/OutliningIndicators/InBlock.gif)
144
![](/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
145
![](/Images/OutliningIndicators/InBlock.gif)
146
![](/Images/OutliningIndicators/InBlock.gif)
147
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
![](/Images/OutliningIndicators/ContractedSubBlock.gif)
![](https://www.cnblogs.com/Images/dot.gif)
148
![](/Images/OutliningIndicators/InBlock.gif)
149
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
![](/Images/OutliningIndicators/ContractedSubBlock.gif)
![](https://www.cnblogs.com/Images/dot.gif)
150
![](/Images/OutliningIndicators/InBlock.gif)
151
![](/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
152
![](/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
153
![](/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
154
![](/Images/OutliningIndicators/InBlock.gif)
155
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
![](/Images/OutliningIndicators/ContractedSubBlock.gif)
![](https://www.cnblogs.com/Images/dot.gif)
156
![](/Images/OutliningIndicators/InBlock.gif)
157
![](/Images/OutliningIndicators/InBlock.gif)
158
![](/Images/OutliningIndicators/InBlock.gif)
159
![](/Images/OutliningIndicators/InBlock.gif)
160
![](/Images/OutliningIndicators/InBlock.gif)
161
![](/Images/OutliningIndicators/InBlock.gif)
162
![](/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
163
![](/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
164
![](/Images/OutliningIndicators/ExpandedBlockEnd.gif)
165
![](/Images/OutliningIndicators/None.gif)