c#泛型学习(二)
2006-05-11 16:22 Clingingboy 阅读(902) 评论(0) 编辑 收藏 举报
1.泛型和泛型强制转换
2.继承和泛型
3.泛型方法
4.泛型委托
记录一下
1
using System;
2
using System.Collections.Generic;
3
using System.Text;
4![](/Images/OutliningIndicators/None.gif)
5
namespace VS2005Demo2
6![](/Images/OutliningIndicators/ExpandedBlockStart.gif)
![](/Images/OutliningIndicators/ContractedBlock.gif)
{
7![](/Images/OutliningIndicators/InBlock.gif)
8![](/Images/OutliningIndicators/ContractedSubBlock.gif)
C# 编译器只允许将泛型参数隐式强制转换到 Object 或约束指定的类型#region C# 编译器只允许将泛型参数隐式强制转换到 Object 或约束指定的类型
9
public interface ISomeInterface
10![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{ }
11
class BaseClass
12![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{ }
13
class MyClass<T> where T : BaseClass, ISomeInterface
14![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
15
void SomeMethod(T t)
16![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
17
ISomeInterface obj1 = t;
18
BaseClass obj2 = t;
19
object obj3 = t;
20
}
21
}
22
#endregion
23![](/Images/OutliningIndicators/InBlock.gif)
24![](/Images/OutliningIndicators/ContractedSubBlock.gif)
编译器允许您将泛型参数显式强制转换到其他任何接口,但不能将其转换到类#region 编译器允许您将泛型参数显式强制转换到其他任何接口,但不能将其转换到类
25
class SomeClass
26![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{ }
27
//class MyClass1<T>
28
//{
29
// void SomeMethod(T t)
30
// {
31
// ISomeInterface obj1 = (ISomeInterface)t; //Compiles
32
// SomeClass obj2 = (SomeClass)t; //Does not compile
33
// }
34
//}
35
#endregion
36![](/Images/OutliningIndicators/InBlock.gif)
37![](/Images/OutliningIndicators/InBlock.gif)
38![](/Images/OutliningIndicators/ContractedSubBlock.gif)
使用临时的 Object 变量,将泛型参数强制转换到其他任何类型#region 使用临时的 Object 变量,将泛型参数强制转换到其他任何类型
39
class MyClass2<T>
40![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
41
void SomeMethod(T t)
42![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
43
object temp = t;
44
SomeClass obj = (SomeClass)temp;
45
}
46
}
47
#endregion
48![](/Images/OutliningIndicators/InBlock.gif)
49![](/Images/OutliningIndicators/ContractedSubBlock.gif)
使用is和as运算符#region 使用is和as运算符
50
public class MyClass3<T>
51![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
52
public void SomeMethod(T t)
53![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
54![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
if (t is int)
{ }
55![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
if (t is LinkedList<int, string>)
{ }
56
string str = t as string;
57![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
if (str != null)
{ }
58
LinkedList<int, string> list = t as LinkedList<int, string>;
59![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
if (list != null)
{ }
60
}
61
}
62
#endregion
63![](/Images/OutliningIndicators/InBlock.gif)
64
}
65![](/Images/OutliningIndicators/None.gif)
![](/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/InBlock.gif)
8
![](/Images/OutliningIndicators/ContractedSubBlock.gif)
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
9
![](/Images/OutliningIndicators/InBlock.gif)
10
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
![](/Images/OutliningIndicators/ContractedSubBlock.gif)
![](https://www.cnblogs.com/Images/dot.gif)
11
![](/Images/OutliningIndicators/InBlock.gif)
12
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
![](/Images/OutliningIndicators/ContractedSubBlock.gif)
![](https://www.cnblogs.com/Images/dot.gif)
13
![](/Images/OutliningIndicators/InBlock.gif)
14
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
![](/Images/OutliningIndicators/ContractedSubBlock.gif)
![](https://www.cnblogs.com/Images/dot.gif)
15
![](/Images/OutliningIndicators/InBlock.gif)
16
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
![](/Images/OutliningIndicators/ContractedSubBlock.gif)
![](https://www.cnblogs.com/Images/dot.gif)
17
![](/Images/OutliningIndicators/InBlock.gif)
18
![](/Images/OutliningIndicators/InBlock.gif)
19
![](/Images/OutliningIndicators/InBlock.gif)
20
![](/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
21
![](/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
22
![](/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
23
![](/Images/OutliningIndicators/InBlock.gif)
24
![](/Images/OutliningIndicators/ContractedSubBlock.gif)
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
25
![](/Images/OutliningIndicators/InBlock.gif)
26
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
![](/Images/OutliningIndicators/ContractedSubBlock.gif)
![](https://www.cnblogs.com/Images/dot.gif)
27
![](/Images/OutliningIndicators/InBlock.gif)
28
![](/Images/OutliningIndicators/InBlock.gif)
29
![](/Images/OutliningIndicators/InBlock.gif)
30
![](/Images/OutliningIndicators/InBlock.gif)
31
![](/Images/OutliningIndicators/InBlock.gif)
32
![](/Images/OutliningIndicators/InBlock.gif)
33
![](/Images/OutliningIndicators/InBlock.gif)
34
![](/Images/OutliningIndicators/InBlock.gif)
35
![](/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
36
![](/Images/OutliningIndicators/InBlock.gif)
37
![](/Images/OutliningIndicators/InBlock.gif)
38
![](/Images/OutliningIndicators/ContractedSubBlock.gif)
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
39
![](/Images/OutliningIndicators/InBlock.gif)
40
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
![](/Images/OutliningIndicators/ContractedSubBlock.gif)
![](https://www.cnblogs.com/Images/dot.gif)
41
![](/Images/OutliningIndicators/InBlock.gif)
42
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
![](/Images/OutliningIndicators/ContractedSubBlock.gif)
![](https://www.cnblogs.com/Images/dot.gif)
43
![](/Images/OutliningIndicators/InBlock.gif)
44
![](/Images/OutliningIndicators/InBlock.gif)
45
![](/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
46
![](/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
47
![](/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
48
![](/Images/OutliningIndicators/InBlock.gif)
49
![](/Images/OutliningIndicators/ContractedSubBlock.gif)
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
50
![](/Images/OutliningIndicators/InBlock.gif)
51
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
![](/Images/OutliningIndicators/ContractedSubBlock.gif)
![](https://www.cnblogs.com/Images/dot.gif)
52
![](/Images/OutliningIndicators/InBlock.gif)
53
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
![](/Images/OutliningIndicators/ContractedSubBlock.gif)
![](https://www.cnblogs.com/Images/dot.gif)
54
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
![](/Images/OutliningIndicators/ContractedSubBlock.gif)
![](https://www.cnblogs.com/Images/dot.gif)
55
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
![](/Images/OutliningIndicators/ContractedSubBlock.gif)
![](https://www.cnblogs.com/Images/dot.gif)
56
![](/Images/OutliningIndicators/InBlock.gif)
57
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
![](/Images/OutliningIndicators/ContractedSubBlock.gif)
![](https://www.cnblogs.com/Images/dot.gif)
58
![](/Images/OutliningIndicators/InBlock.gif)
59
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
![](/Images/OutliningIndicators/ContractedSubBlock.gif)
![](https://www.cnblogs.com/Images/dot.gif)
60
![](/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
61
![](/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
62
![](/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
63
![](/Images/OutliningIndicators/InBlock.gif)
64
![](/Images/OutliningIndicators/ExpandedBlockEnd.gif)
65
![](/Images/OutliningIndicators/None.gif)
2.继承和泛型
1
using System;
2
using System.Collections.Generic;
3
using System.Text;
4![](/Images/OutliningIndicators/None.gif)
5
namespace VS2005Demo2
6![](/Images/OutliningIndicators/ExpandedBlockStart.gif)
![](/Images/OutliningIndicators/ContractedBlock.gif)
{
7![](/Images/OutliningIndicators/ContractedSubBlock.gif)
继承和泛型#region 继承和泛型
8
public class BaseClass<T>
9![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{ }
10
public class SubClass : BaseClass<int>
11![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{ }
12![](/Images/OutliningIndicators/InBlock.gif)
13![](/Images/OutliningIndicators/InBlock.gif)
14
public class SubClass1<R> : BaseClass<R>
15![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{ }
16
#endregion
17![](/Images/OutliningIndicators/InBlock.gif)
18![](/Images/OutliningIndicators/ContractedSubBlock.gif)
继承约束#region 继承约束
19
public class BaseClass1<T> where T : ISomeInterface
20![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{ }
21
public class SubClass2<T> : BaseClass1<T> where T : ISomeInterface
22![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{ }
23![](/Images/OutliningIndicators/InBlock.gif)
24
//构造函数约束
25
public class BaseClass3<T> where T : new()
26![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
27
public T SomeMethod()
28![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
29
return new T();
30
}
31
}
32
public class SubClass3<T> : BaseClass3<T> where T : new()
33![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{ }
34![](/Images/OutliningIndicators/InBlock.gif)
35
#endregion
36![](/Images/OutliningIndicators/InBlock.gif)
37![](/Images/OutliningIndicators/ContractedSubBlock.gif)
虚拟方法#region 虚拟方法
38
public class BaseClass4<T>
39![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
40
public virtual T SomeMethod()
41![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
42
return default(T);
43
}
44
}
45
public class SubClass4 : BaseClass4<int>
46![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
47
public override int SomeMethod()
48![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
49
return 0;
50
}
51
}
52![](/Images/OutliningIndicators/InBlock.gif)
53
public class SubClass5<T> : BaseClass4<T>
54![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
55
public override T SomeMethod()
56![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
57
return default(T);
58
}
59
}
60![](/Images/OutliningIndicators/InBlock.gif)
61
#endregion
62![](/Images/OutliningIndicators/InBlock.gif)
63![](/Images/OutliningIndicators/ContractedSubBlock.gif)
接口、抽象类继承#region 接口、抽象类继承
64
public interface ISomeInterface6<T>
65![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
66
T SomeMethod(T t);
67
}
68
public abstract class BaseClass6<T>
69![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
70
public abstract T SomeMethod(T t);
71
}
72
public class SubClass6<T> : BaseClass6<T>,ISomeInterface6<T>
73![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
74
public override T SomeMethod(T t)
75![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{ return default(T); }
76
}
77
#endregion
78![](/Images/OutliningIndicators/InBlock.gif)
79![](/Images/OutliningIndicators/ContractedSubBlock.gif)
泛型抽象方法和泛型接口#region 泛型抽象方法和泛型接口
80
//public class Calculator<T>
81
//{
82
// public T Add(T arg1, T arg2)
83
// {
84
// return arg1 + arg2;//Does not compile
85
// }
86
// //Rest of the methods
87
//}
88![](/Images/OutliningIndicators/InBlock.gif)
89
public abstract class BaseCalculator<T>
90![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
91
public abstract T Add(T arg1, T arg2);
92
//public abstract T Subtract(T arg1, T arg2);
93
//public abstract T Divide(T arg1, T arg2);
94
//public abstract T Multiply(T arg1, T arg2);
95
}
96
public class MyCalculator : BaseCalculator<int>
97![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
98
public override int Add(int arg1, int arg2)
99![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
100
return arg1 + arg2;
101
}
102
//Rest of the methods
103
}
104![](/Images/OutliningIndicators/InBlock.gif)
105
public interface ICalculator<T>
106![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
107
T Add(T arg1, T arg2);
108
//Rest of the methods
109
}
110
public class MyCalculator1 : ICalculator<int>
111![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
112
public int Add(int arg1, int arg2)
113![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
114
return arg1 + arg2;
115
}
116
//Rest of the methods
117
}
118
#endregion
119![](/Images/OutliningIndicators/InBlock.gif)
120
}
121![](/Images/OutliningIndicators/None.gif)
![](/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/ContractedSubBlock.gif)
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
8
![](/Images/OutliningIndicators/InBlock.gif)
9
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
![](/Images/OutliningIndicators/ContractedSubBlock.gif)
![](https://www.cnblogs.com/Images/dot.gif)
10
![](/Images/OutliningIndicators/InBlock.gif)
11
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
![](/Images/OutliningIndicators/ContractedSubBlock.gif)
![](https://www.cnblogs.com/Images/dot.gif)
12
![](/Images/OutliningIndicators/InBlock.gif)
13
![](/Images/OutliningIndicators/InBlock.gif)
14
![](/Images/OutliningIndicators/InBlock.gif)
15
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
![](/Images/OutliningIndicators/ContractedSubBlock.gif)
![](https://www.cnblogs.com/Images/dot.gif)
16
![](/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
17
![](/Images/OutliningIndicators/InBlock.gif)
18
![](/Images/OutliningIndicators/ContractedSubBlock.gif)
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
19
![](/Images/OutliningIndicators/InBlock.gif)
20
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
![](/Images/OutliningIndicators/ContractedSubBlock.gif)
![](https://www.cnblogs.com/Images/dot.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/InBlock.gif)
25
![](/Images/OutliningIndicators/InBlock.gif)
26
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
![](/Images/OutliningIndicators/ContractedSubBlock.gif)
![](https://www.cnblogs.com/Images/dot.gif)
27
![](/Images/OutliningIndicators/InBlock.gif)
28
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
![](/Images/OutliningIndicators/ContractedSubBlock.gif)
![](https://www.cnblogs.com/Images/dot.gif)
29
![](/Images/OutliningIndicators/InBlock.gif)
30
![](/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
31
![](/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
32
![](/Images/OutliningIndicators/InBlock.gif)
33
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
![](/Images/OutliningIndicators/ContractedSubBlock.gif)
![](https://www.cnblogs.com/Images/dot.gif)
34
![](/Images/OutliningIndicators/InBlock.gif)
35
![](/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
36
![](/Images/OutliningIndicators/InBlock.gif)
37
![](/Images/OutliningIndicators/ContractedSubBlock.gif)
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
38
![](/Images/OutliningIndicators/InBlock.gif)
39
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
![](/Images/OutliningIndicators/ContractedSubBlock.gif)
![](https://www.cnblogs.com/Images/dot.gif)
40
![](/Images/OutliningIndicators/InBlock.gif)
41
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
![](/Images/OutliningIndicators/ContractedSubBlock.gif)
![](https://www.cnblogs.com/Images/dot.gif)
42
![](/Images/OutliningIndicators/InBlock.gif)
43
![](/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
44
![](/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
45
![](/Images/OutliningIndicators/InBlock.gif)
46
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
![](/Images/OutliningIndicators/ContractedSubBlock.gif)
![](https://www.cnblogs.com/Images/dot.gif)
47
![](/Images/OutliningIndicators/InBlock.gif)
48
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
![](/Images/OutliningIndicators/ContractedSubBlock.gif)
![](https://www.cnblogs.com/Images/dot.gif)
49
![](/Images/OutliningIndicators/InBlock.gif)
50
![](/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
51
![](/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
52
![](/Images/OutliningIndicators/InBlock.gif)
53
![](/Images/OutliningIndicators/InBlock.gif)
54
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
![](/Images/OutliningIndicators/ContractedSubBlock.gif)
![](https://www.cnblogs.com/Images/dot.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/ExpandedSubBlockEnd.gif)
59
![](/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
60
![](/Images/OutliningIndicators/InBlock.gif)
61
![](/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
62
![](/Images/OutliningIndicators/InBlock.gif)
63
![](/Images/OutliningIndicators/ContractedSubBlock.gif)
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
64
![](/Images/OutliningIndicators/InBlock.gif)
65
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
![](/Images/OutliningIndicators/ContractedSubBlock.gif)
![](https://www.cnblogs.com/Images/dot.gif)
66
![](/Images/OutliningIndicators/InBlock.gif)
67
![](/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
68
![](/Images/OutliningIndicators/InBlock.gif)
69
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
![](/Images/OutliningIndicators/ContractedSubBlock.gif)
![](https://www.cnblogs.com/Images/dot.gif)
70
![](/Images/OutliningIndicators/InBlock.gif)
71
![](/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
72
![](/Images/OutliningIndicators/InBlock.gif)
73
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
![](/Images/OutliningIndicators/ContractedSubBlock.gif)
![](https://www.cnblogs.com/Images/dot.gif)
74
![](/Images/OutliningIndicators/InBlock.gif)
75
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
![](/Images/OutliningIndicators/ContractedSubBlock.gif)
![](https://www.cnblogs.com/Images/dot.gif)
76
![](/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
77
![](/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
78
![](/Images/OutliningIndicators/InBlock.gif)
79
![](/Images/OutliningIndicators/ContractedSubBlock.gif)
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
80
![](/Images/OutliningIndicators/InBlock.gif)
81
![](/Images/OutliningIndicators/InBlock.gif)
82
![](/Images/OutliningIndicators/InBlock.gif)
83
![](/Images/OutliningIndicators/InBlock.gif)
84
![](/Images/OutliningIndicators/InBlock.gif)
85
![](/Images/OutliningIndicators/InBlock.gif)
86
![](/Images/OutliningIndicators/InBlock.gif)
87
![](/Images/OutliningIndicators/InBlock.gif)
88
![](/Images/OutliningIndicators/InBlock.gif)
89
![](/Images/OutliningIndicators/InBlock.gif)
90
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
![](/Images/OutliningIndicators/ContractedSubBlock.gif)
![](https://www.cnblogs.com/Images/dot.gif)
91
![](/Images/OutliningIndicators/InBlock.gif)
92
![](/Images/OutliningIndicators/InBlock.gif)
93
![](/Images/OutliningIndicators/InBlock.gif)
94
![](/Images/OutliningIndicators/InBlock.gif)
95
![](/Images/OutliningIndicators/ExpandedSubBlockEnd.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/InBlock.gif)
99
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
![](/Images/OutliningIndicators/ContractedSubBlock.gif)
![](https://www.cnblogs.com/Images/dot.gif)
100
![](/Images/OutliningIndicators/InBlock.gif)
101
![](/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
102
![](/Images/OutliningIndicators/InBlock.gif)
103
![](/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
104
![](/Images/OutliningIndicators/InBlock.gif)
105
![](/Images/OutliningIndicators/InBlock.gif)
106
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
![](/Images/OutliningIndicators/ContractedSubBlock.gif)
![](https://www.cnblogs.com/Images/dot.gif)
107
![](/Images/OutliningIndicators/InBlock.gif)
108
![](/Images/OutliningIndicators/InBlock.gif)
109
![](/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
110
![](/Images/OutliningIndicators/InBlock.gif)
111
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
![](/Images/OutliningIndicators/ContractedSubBlock.gif)
![](https://www.cnblogs.com/Images/dot.gif)
112
![](/Images/OutliningIndicators/InBlock.gif)
113
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
![](/Images/OutliningIndicators/ContractedSubBlock.gif)
![](https://www.cnblogs.com/Images/dot.gif)
114
![](/Images/OutliningIndicators/InBlock.gif)
115
![](/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
116
![](/Images/OutliningIndicators/InBlock.gif)
117
![](/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
118
![](/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
119
![](/Images/OutliningIndicators/InBlock.gif)
120
![](/Images/OutliningIndicators/ExpandedBlockEnd.gif)
121
![](/Images/OutliningIndicators/None.gif)
3.泛型方法
1
using System;
2
using System.Collections.Generic;
3
using System.Text;
4![](/Images/OutliningIndicators/None.gif)
5
namespace VS2005Demo2
6![](/Images/OutliningIndicators/ExpandedBlockStart.gif)
![](/Images/OutliningIndicators/ContractedBlock.gif)
{
7![](/Images/OutliningIndicators/InBlock.gif)
8![](/Images/OutliningIndicators/ContractedSubBlock.gif)
泛型方法#region 泛型方法
9
public class MyClass
10![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
11
public void MyMethod<T>(T t)
12![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{ }
13
}
14![](/Images/OutliningIndicators/InBlock.gif)
15
public class Class3
16![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
17
public void Test()
18![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
19
MyClass obj = new MyClass();
20
obj.MyMethod<int>(3);
21![](/Images/OutliningIndicators/InBlock.gif)
22
obj.MyMethod(3);
23
}
24
}
25
#endregion
26![](/Images/OutliningIndicators/InBlock.gif)
27![](/Images/OutliningIndicators/ContractedSubBlock.gif)
编译器无法只根据返回值的类型推断出类型#region 编译器无法只根据返回值的类型推断出类型
28
public class MyClass1
29![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
30
public T MyMethod<T>()
31![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{ return default(T); }
32
}
33![](/Images/OutliningIndicators/InBlock.gif)
34
public class Class31
35![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
36
public void Test()
37![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
38![](/Images/OutliningIndicators/InBlock.gif)
39
MyClass1 obj = new MyClass1();
40
int number = obj.MyMethod<int>();
41
}
42
}
43
#endregion
44![](/Images/OutliningIndicators/InBlock.gif)
45![](/Images/OutliningIndicators/ContractedSubBlock.gif)
泛型方法约束#region 泛型方法约束
46
public class Class32
47![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
48
public T MyMethod<T>(T t) where T : IComparable<T>
49![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{ return default(T); }
50
}
51
#endregion
52![](/Images/OutliningIndicators/InBlock.gif)
53![](/Images/OutliningIndicators/ContractedSubBlock.gif)
泛型虚拟方法#region 泛型虚拟方法
54
public class BaseClass33
55![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
56
public virtual void SomeMethod<T>(T t)
57![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{ }
58
}
59
public class SubClass33 : BaseClass33
60![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
61
public override void SomeMethod<T>(T t)
62![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
63
base.SomeMethod<T>(t);
64
}
65
}
66![](/Images/OutliningIndicators/InBlock.gif)
67
public class BaseClass34
68![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
69
public virtual void SomeMethod<T>(T t) where T : new()
70![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{ }
71
}
72
public class SubClass34 : BaseClass34
73![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
74
public override void SomeMethod<T>(T t)// where T : IComparable<T>
75![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{ }
76
}
77![](/Images/OutliningIndicators/InBlock.gif)
78
public class BaseClass35
79![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
80
public virtual void SomeMethod<T>(T t)
81![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{ }
82
}
83
public class SubClass35 : BaseClass35
84![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
85
public override void SomeMethod<T>(T t)
86![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
87
base.SomeMethod<T>(t);
88
base.SomeMethod(t);
89
}
90
}
91
#endregion
92![](/Images/OutliningIndicators/InBlock.gif)
93![](/Images/OutliningIndicators/ContractedSubBlock.gif)
泛型静态方法#region 泛型静态方法
94
public class MyClass36<T>
95![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
96
public static T SomeMethod(T t)
97![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{ return default(T); }
98
}
99![](/Images/OutliningIndicators/InBlock.gif)
100
public class Class36
101![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
102
public void Test()
103![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
104
int number = MyClass36<int>.SomeMethod(3);
105
}
106
}
107![](/Images/OutliningIndicators/InBlock.gif)
108
public class MyClass37<T>
109![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
110
public static T SomeMethod<X>(T t, X x)
111![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{ return default(T); }
112
}
113
public class Class37
114![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
115
public void Test()
116![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
117
int number = MyClass37<int>.SomeMethod<string>(3, "AAA");
118
int number1 = MyClass37<int>.SomeMethod(3, "AAA");
119
}
120
}
121![](/Images/OutliningIndicators/InBlock.gif)
122
public class MyClass38
123![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
124
public static T SomeMethod<T>(T t) where T : IComparable<T>
125![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{ return default(T); }
126
}
127![](/Images/OutliningIndicators/InBlock.gif)
128
#endregion
129
}
130![](/Images/OutliningIndicators/None.gif)
![](/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/InBlock.gif)
8
![](/Images/OutliningIndicators/ContractedSubBlock.gif)
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
9
![](/Images/OutliningIndicators/InBlock.gif)
10
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
![](/Images/OutliningIndicators/ContractedSubBlock.gif)
![](https://www.cnblogs.com/Images/dot.gif)
11
![](/Images/OutliningIndicators/InBlock.gif)
12
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
![](/Images/OutliningIndicators/ContractedSubBlock.gif)
![](https://www.cnblogs.com/Images/dot.gif)
13
![](/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
14
![](/Images/OutliningIndicators/InBlock.gif)
15
![](/Images/OutliningIndicators/InBlock.gif)
16
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
![](/Images/OutliningIndicators/ContractedSubBlock.gif)
![](https://www.cnblogs.com/Images/dot.gif)
17
![](/Images/OutliningIndicators/InBlock.gif)
18
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
![](/Images/OutliningIndicators/ContractedSubBlock.gif)
![](https://www.cnblogs.com/Images/dot.gif)
19
![](/Images/OutliningIndicators/InBlock.gif)
20
![](/Images/OutliningIndicators/InBlock.gif)
21
![](/Images/OutliningIndicators/InBlock.gif)
22
![](/Images/OutliningIndicators/InBlock.gif)
23
![](/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
24
![](/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
25
![](/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
26
![](/Images/OutliningIndicators/InBlock.gif)
27
![](/Images/OutliningIndicators/ContractedSubBlock.gif)
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
28
![](/Images/OutliningIndicators/InBlock.gif)
29
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
![](/Images/OutliningIndicators/ContractedSubBlock.gif)
![](https://www.cnblogs.com/Images/dot.gif)
30
![](/Images/OutliningIndicators/InBlock.gif)
31
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
![](/Images/OutliningIndicators/ContractedSubBlock.gif)
![](https://www.cnblogs.com/Images/dot.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/ExpandedSubBlockStart.gif)
![](/Images/OutliningIndicators/ContractedSubBlock.gif)
![](https://www.cnblogs.com/Images/dot.gif)
38
![](/Images/OutliningIndicators/InBlock.gif)
39
![](/Images/OutliningIndicators/InBlock.gif)
40
![](/Images/OutliningIndicators/InBlock.gif)
41
![](/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
42
![](/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
43
![](/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
44
![](/Images/OutliningIndicators/InBlock.gif)
45
![](/Images/OutliningIndicators/ContractedSubBlock.gif)
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
46
![](/Images/OutliningIndicators/InBlock.gif)
47
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
![](/Images/OutliningIndicators/ContractedSubBlock.gif)
![](https://www.cnblogs.com/Images/dot.gif)
48
![](/Images/OutliningIndicators/InBlock.gif)
49
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
![](/Images/OutliningIndicators/ContractedSubBlock.gif)
![](https://www.cnblogs.com/Images/dot.gif)
50
![](/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
51
![](/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
52
![](/Images/OutliningIndicators/InBlock.gif)
53
![](/Images/OutliningIndicators/ContractedSubBlock.gif)
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
54
![](/Images/OutliningIndicators/InBlock.gif)
55
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
![](/Images/OutliningIndicators/ContractedSubBlock.gif)
![](https://www.cnblogs.com/Images/dot.gif)
56
![](/Images/OutliningIndicators/InBlock.gif)
57
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
![](/Images/OutliningIndicators/ContractedSubBlock.gif)
![](https://www.cnblogs.com/Images/dot.gif)
58
![](/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
59
![](/Images/OutliningIndicators/InBlock.gif)
60
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
![](/Images/OutliningIndicators/ContractedSubBlock.gif)
![](https://www.cnblogs.com/Images/dot.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/ExpandedSubBlockStart.gif)
![](/Images/OutliningIndicators/ContractedSubBlock.gif)
![](https://www.cnblogs.com/Images/dot.gif)
69
![](/Images/OutliningIndicators/InBlock.gif)
70
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
![](/Images/OutliningIndicators/ContractedSubBlock.gif)
![](https://www.cnblogs.com/Images/dot.gif)
71
![](/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
72
![](/Images/OutliningIndicators/InBlock.gif)
73
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
![](/Images/OutliningIndicators/ContractedSubBlock.gif)
![](https://www.cnblogs.com/Images/dot.gif)
74
![](/Images/OutliningIndicators/InBlock.gif)
75
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
![](/Images/OutliningIndicators/ContractedSubBlock.gif)
![](https://www.cnblogs.com/Images/dot.gif)
76
![](/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
77
![](/Images/OutliningIndicators/InBlock.gif)
78
![](/Images/OutliningIndicators/InBlock.gif)
79
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
![](/Images/OutliningIndicators/ContractedSubBlock.gif)
![](https://www.cnblogs.com/Images/dot.gif)
80
![](/Images/OutliningIndicators/InBlock.gif)
81
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
![](/Images/OutliningIndicators/ContractedSubBlock.gif)
![](https://www.cnblogs.com/Images/dot.gif)
82
![](/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
83
![](/Images/OutliningIndicators/InBlock.gif)
84
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
![](/Images/OutliningIndicators/ContractedSubBlock.gif)
![](https://www.cnblogs.com/Images/dot.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/ExpandedSubBlockEnd.gif)
90
![](/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
91
![](/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
92
![](/Images/OutliningIndicators/InBlock.gif)
93
![](/Images/OutliningIndicators/ContractedSubBlock.gif)
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
94
![](/Images/OutliningIndicators/InBlock.gif)
95
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
![](/Images/OutliningIndicators/ContractedSubBlock.gif)
![](https://www.cnblogs.com/Images/dot.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/ExpandedSubBlockEnd.gif)
99
![](/Images/OutliningIndicators/InBlock.gif)
100
![](/Images/OutliningIndicators/InBlock.gif)
101
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
![](/Images/OutliningIndicators/ContractedSubBlock.gif)
![](https://www.cnblogs.com/Images/dot.gif)
102
![](/Images/OutliningIndicators/InBlock.gif)
103
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
![](/Images/OutliningIndicators/ContractedSubBlock.gif)
![](https://www.cnblogs.com/Images/dot.gif)
104
![](/Images/OutliningIndicators/InBlock.gif)
105
![](/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
106
![](/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
107
![](/Images/OutliningIndicators/InBlock.gif)
108
![](/Images/OutliningIndicators/InBlock.gif)
109
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
![](/Images/OutliningIndicators/ContractedSubBlock.gif)
![](https://www.cnblogs.com/Images/dot.gif)
110
![](/Images/OutliningIndicators/InBlock.gif)
111
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
![](/Images/OutliningIndicators/ContractedSubBlock.gif)
![](https://www.cnblogs.com/Images/dot.gif)
112
![](/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
113
![](/Images/OutliningIndicators/InBlock.gif)
114
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
![](/Images/OutliningIndicators/ContractedSubBlock.gif)
![](https://www.cnblogs.com/Images/dot.gif)
115
![](/Images/OutliningIndicators/InBlock.gif)
116
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
![](/Images/OutliningIndicators/ContractedSubBlock.gif)
![](https://www.cnblogs.com/Images/dot.gif)
117
![](/Images/OutliningIndicators/InBlock.gif)
118
![](/Images/OutliningIndicators/InBlock.gif)
119
![](/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
120
![](/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
121
![](/Images/OutliningIndicators/InBlock.gif)
122
![](/Images/OutliningIndicators/InBlock.gif)
123
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
![](/Images/OutliningIndicators/ContractedSubBlock.gif)
![](https://www.cnblogs.com/Images/dot.gif)
124
![](/Images/OutliningIndicators/InBlock.gif)
125
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
![](/Images/OutliningIndicators/ContractedSubBlock.gif)
![](https://www.cnblogs.com/Images/dot.gif)
126
![](/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
127
![](/Images/OutliningIndicators/InBlock.gif)
128
![](/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
129
![](/Images/OutliningIndicators/ExpandedBlockEnd.gif)
130
![](/Images/OutliningIndicators/None.gif)
4.泛型委托
1
using System;
2
using System.Collections.Generic;
3
using System.Text;
4![](/Images/OutliningIndicators/None.gif)
5
namespace VS2005Demo2
6![](/Images/OutliningIndicators/ExpandedBlockStart.gif)
![](/Images/OutliningIndicators/ContractedBlock.gif)
{
7![](/Images/OutliningIndicators/ContractedSubBlock.gif)
泛型委托#region 泛型委托
8
public class MyClass40<T>
9![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
10
public delegate void GenericDelegate(T t);
11
public void SomeMethod(T t)
12![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{ }
13
}
14![](/Images/OutliningIndicators/InBlock.gif)
15
public class MyClassTest40
16![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
17
public void Tests()
18![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
19
MyClass40<int> obj = new MyClass40<int>();
20
MyClass40<int>.GenericDelegate del;
21![](/Images/OutliningIndicators/InBlock.gif)
22
del = new MyClass40<int>.GenericDelegate(obj.SomeMethod);
23
del(3);
24![](/Images/OutliningIndicators/InBlock.gif)
25
//委托推理
26
del = obj.SomeMethod;
27![](/Images/OutliningIndicators/InBlock.gif)
28
}
29
}
30
#endregion
31![](/Images/OutliningIndicators/InBlock.gif)
32![](/Images/OutliningIndicators/ContractedSubBlock.gif)
委托泛型参数#region 委托泛型参数
33
public class MyClass41<T>
34![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
35
public delegate void GenericDelegate<X>(T t, X x);
36
}
37![](/Images/OutliningIndicators/InBlock.gif)
38
//外部委托
39
public delegate void GenericDelegate<T>(T t);
40![](/Images/OutliningIndicators/InBlock.gif)
41
public class MyClass42
42![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
43
public void SomeMethod(int number)
44![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{ }
45
}
46![](/Images/OutliningIndicators/InBlock.gif)
47
public class MyClassTest42
48![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
49
public void Test()
50![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
51
MyClass42 obj = new MyClass42();
52
GenericDelegate<int> del;
53
//del = new GenericDelegate<int>(obj.SomeMethod);
54![](/Images/OutliningIndicators/InBlock.gif)
55
del = obj.SomeMethod;
56
del(3);
57![](/Images/OutliningIndicators/InBlock.gif)
58
}
59
}
60![](/Images/OutliningIndicators/InBlock.gif)
61
#endregion
62![](/Images/OutliningIndicators/InBlock.gif)
63![](/Images/OutliningIndicators/ContractedSubBlock.gif)
委托泛型参数#region 委托泛型参数
64
public delegate void MyDelegate<T>(T t) where T : IComparable<T>;
65
#endregion
66![](/Images/OutliningIndicators/InBlock.gif)
67![](/Images/OutliningIndicators/ContractedSubBlock.gif)
事件#region 事件
68![](/Images/OutliningIndicators/InBlock.gif)
69
public delegate void GenericEventHandler<S, A>(S sender, A args);
70
71
public class MyPublisher
72![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
73
public event GenericEventHandler<MyPublisher, EventArgs> MyEvent;
74
public void FireEvent()
75![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
76
MyEvent(this, EventArgs.Empty);
77
}
78
}
79![](/Images/OutliningIndicators/InBlock.gif)
80
public class MySubscriber<A> //Optional: can be a specific type
81![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
82
public void SomeMethod(MyPublisher sender, A args)
83![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{ }
84
}
85
public class MyClassTest43
86![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
87
public void Test()
88![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
89
MyPublisher publisher = new MyPublisher();
90
MySubscriber<EventArgs> subscriber = new MySubscriber<EventArgs>();
91
publisher.MyEvent += subscriber.SomeMethod;
92
}
93
}
94
#endregion
95
}
96![](/Images/OutliningIndicators/None.gif)
![](/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/ContractedSubBlock.gif)
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
8
![](/Images/OutliningIndicators/InBlock.gif)
9
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
![](/Images/OutliningIndicators/ContractedSubBlock.gif)
![](https://www.cnblogs.com/Images/dot.gif)
10
![](/Images/OutliningIndicators/InBlock.gif)
11
![](/Images/OutliningIndicators/InBlock.gif)
12
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
![](/Images/OutliningIndicators/ContractedSubBlock.gif)
![](https://www.cnblogs.com/Images/dot.gif)
13
![](/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
14
![](/Images/OutliningIndicators/InBlock.gif)
15
![](/Images/OutliningIndicators/InBlock.gif)
16
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
![](/Images/OutliningIndicators/ContractedSubBlock.gif)
![](https://www.cnblogs.com/Images/dot.gif)
17
![](/Images/OutliningIndicators/InBlock.gif)
18
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
![](/Images/OutliningIndicators/ContractedSubBlock.gif)
![](https://www.cnblogs.com/Images/dot.gif)
19
![](/Images/OutliningIndicators/InBlock.gif)
20
![](/Images/OutliningIndicators/InBlock.gif)
21
![](/Images/OutliningIndicators/InBlock.gif)
22
![](/Images/OutliningIndicators/InBlock.gif)
23
![](/Images/OutliningIndicators/InBlock.gif)
24
![](/Images/OutliningIndicators/InBlock.gif)
25
![](/Images/OutliningIndicators/InBlock.gif)
26
![](/Images/OutliningIndicators/InBlock.gif)
27
![](/Images/OutliningIndicators/InBlock.gif)
28
![](/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
29
![](/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
30
![](/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
31
![](/Images/OutliningIndicators/InBlock.gif)
32
![](/Images/OutliningIndicators/ContractedSubBlock.gif)
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
33
![](/Images/OutliningIndicators/InBlock.gif)
34
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
![](/Images/OutliningIndicators/ContractedSubBlock.gif)
![](https://www.cnblogs.com/Images/dot.gif)
35
![](/Images/OutliningIndicators/InBlock.gif)
36
![](/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
37
![](/Images/OutliningIndicators/InBlock.gif)
38
![](/Images/OutliningIndicators/InBlock.gif)
39
![](/Images/OutliningIndicators/InBlock.gif)
40
![](/Images/OutliningIndicators/InBlock.gif)
41
![](/Images/OutliningIndicators/InBlock.gif)
42
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
![](/Images/OutliningIndicators/ContractedSubBlock.gif)
![](https://www.cnblogs.com/Images/dot.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/ExpandedSubBlockEnd.gif)
46
![](/Images/OutliningIndicators/InBlock.gif)
47
![](/Images/OutliningIndicators/InBlock.gif)
48
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
![](/Images/OutliningIndicators/ContractedSubBlock.gif)
![](https://www.cnblogs.com/Images/dot.gif)
49
![](/Images/OutliningIndicators/InBlock.gif)
50
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
![](/Images/OutliningIndicators/ContractedSubBlock.gif)
![](https://www.cnblogs.com/Images/dot.gif)
51
![](/Images/OutliningIndicators/InBlock.gif)
52
![](/Images/OutliningIndicators/InBlock.gif)
53
![](/Images/OutliningIndicators/InBlock.gif)
54
![](/Images/OutliningIndicators/InBlock.gif)
55
![](/Images/OutliningIndicators/InBlock.gif)
56
![](/Images/OutliningIndicators/InBlock.gif)
57
![](/Images/OutliningIndicators/InBlock.gif)
58
![](/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
59
![](/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
60
![](/Images/OutliningIndicators/InBlock.gif)
61
![](/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
62
![](/Images/OutliningIndicators/InBlock.gif)
63
![](/Images/OutliningIndicators/ContractedSubBlock.gif)
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
64
![](/Images/OutliningIndicators/InBlock.gif)
65
![](/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
66
![](/Images/OutliningIndicators/InBlock.gif)
67
![](/Images/OutliningIndicators/ContractedSubBlock.gif)
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
68
![](/Images/OutliningIndicators/InBlock.gif)
69
![](/Images/OutliningIndicators/InBlock.gif)
70
![](/Images/OutliningIndicators/InBlock.gif)
71
![](/Images/OutliningIndicators/InBlock.gif)
72
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
![](/Images/OutliningIndicators/ContractedSubBlock.gif)
![](https://www.cnblogs.com/Images/dot.gif)
73
![](/Images/OutliningIndicators/InBlock.gif)
74
![](/Images/OutliningIndicators/InBlock.gif)
75
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
![](/Images/OutliningIndicators/ContractedSubBlock.gif)
![](https://www.cnblogs.com/Images/dot.gif)
76
![](/Images/OutliningIndicators/InBlock.gif)
77
![](/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
78
![](/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
79
![](/Images/OutliningIndicators/InBlock.gif)
80
![](/Images/OutliningIndicators/InBlock.gif)
81
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
![](/Images/OutliningIndicators/ContractedSubBlock.gif)
![](https://www.cnblogs.com/Images/dot.gif)
82
![](/Images/OutliningIndicators/InBlock.gif)
83
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
![](/Images/OutliningIndicators/ContractedSubBlock.gif)
![](https://www.cnblogs.com/Images/dot.gif)
84
![](/Images/OutliningIndicators/ExpandedSubBlockEnd.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/ExpandedSubBlockStart.gif)
![](/Images/OutliningIndicators/ContractedSubBlock.gif)
![](https://www.cnblogs.com/Images/dot.gif)
89
![](/Images/OutliningIndicators/InBlock.gif)
90
![](/Images/OutliningIndicators/InBlock.gif)
91
![](/Images/OutliningIndicators/InBlock.gif)
92
![](/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
93
![](/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
94
![](/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
95
![](/Images/OutliningIndicators/ExpandedBlockEnd.gif)
96
![](/Images/OutliningIndicators/None.gif)
记录一下