分别用接口和委托2种方式,实现同一个小例子,对比接口与委托.
题目:从2个数中输出较大的数.
一.接口方式实现:
1.定义接口
interface IRule
{
bool Greater(int x, int y);
}
2.接口实现
class GreaterRule : IRule
{
public bool Greater(int x, int y)
{
return x > y;
}
}
3.定义比较大小的函数,函数中将接口作为参数
int PickOne(int a, int b, IRule rule)
{
if (rule.Greater(a, b))
return a;
else
return b;
}
4.执行比较大小的函数
var rule = new GreaterRule();
PickOne(20, 10, rule).Dump();
5.输出结果为20
二.委托方式实现:
1.声明委托
delegate bool RuleDelegate(int x, int y);
2.与委托相同签名的实现
bool GreaterCallback(int x, int y)
{
return x>y;
}
3.定义比较大小的函数,函数中将委托作为参数
int PickOne(int a, int b, RuleDelegate rule)
{
if (rule.Invoke(a, b))
return a;
else
return b;
}
4.执行比较大小的函数
PickOne(20, 10, GreaterCallback).Dump();
5.输出结果为20