C# 接口与委托对比

文章通过定义接口IRule和委托RuleDelegate来实现比较两个数大小的功能。接口实现中,创建了GreaterRule类并实现了IRule接口,而委托实现中定义了GreaterCallback方法并使用RuleDelegate进行调用。两种方式最终都输出较大的数。
摘要由CSDN通过智能技术生成

分别用接口和委托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

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值