代理有什么用?可以不用代理么?

Lucifd 2010-12-19 04:45:58
在网上看到如下代码
using System;
using System.Collections.Generic;
using System.Text;
using Common;

namespace ConsoleApplication8
{
public delegate bool CompareDelegate(int a, int b);
public class MyCompare
{
public static bool CompareMethod(int x , int y)
{
bool result = x > y ? true : false;
return result;
}

}
class Program
{

static void Main(string[] args)
{
CompareDelegate myDelegate = new CompareDelegate(MyCompare.CompareMethod);
int a = 10;
int b = 15;
bool isBigger = myDelegate(a, b);
Console.WriteLine(" a > b ?: " + isBigger);
Console.Read();
}
}
}
如果这样我倒不如直接
MyCompare myCompare= new MyCompare();
myCompare.CompareMethod(a,b);
这样不更简单么?
...全文
85 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
vrhero 2010-12-19
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 wanghui0380 的回复:]
就那你上面的代码来说

Compare 是比较

比较啥对象,设计者不知道,所以他委托,权利延迟到实现的人头上

你想比较 人的身高那就自己实现身高比较,你想实现人的美丑比较,那就自己实现美丑。

总之权利不在设计那个比较方法的人头上,而在使用这个比较方法的头上
[/Quote]
其实楼主的问题在他没有意识到自己身兼“设计者”和“调用者”双重身份...这也算是初学者普遍的问题...

因为没有团队开发或重构的经验,所以不知“协作”为何物...就会产生“直接调用更简单”这种想法...

事实上,委托是作为服务者为调用者提供的协作机制,并非技术问题...所以初学者尤其是缺乏OOP思想的初学者很难理解...
wanghui0380 2010-12-19
  • 打赏
  • 举报
回复
就那你上面的代码来说

Compare 是比较

比较啥对象,设计者不知道,所以他委托,权利延迟到实现的人头上

你想比较 人的身高那就自己实现身高比较,你想实现人的美丑比较,那就自己实现美丑。

总之权利不在设计那个比较方法的人头上,而在使用这个比较方法的头上
threenewbee 2010-12-19
  • 打赏
  • 举报
回复
事实上,无论是什么语言写的程序,最后都被转换为了汇编语言/机器语言。机器语言没有“委托”,所以用委托写出的程序,一定存在一个不用委托的等价版本存在。这些在计算机文化基础之类的非计算机专业的入门科普图书中就有,建议先阅读下,搞清楚基本概念。
wanghui0380 2010-12-19
  • 打赏
  • 举报
回复
不要去看啥语法,从语法上讲,任何语法都是不必要的,因为计算机只认0,1。从这点上说语法是很多余的滴。啥if,else 多余了,直接纸带机打孔多直接

委托是种策略。我们学习是从策略上关心他,我们才不关心语法如何。

你老板接了一笔业务,客户委托他建立一个系统

你老板委托你去调研需求。你委托XX帮你完成一个工作

看明白没有,委托是种权利下放策略,也是一种专业是事情交给专业的人去做的思想,同时也是一种延迟决定态度

客户把项目“委托”给你,就表示他把权利下放给你,做实际任务的是你,因为你更专业(同时做项目这件事情本身被延迟了,延迟到了你的头上,而不是客户自己做)
wuyq11 2010-12-19
  • 打赏
  • 举报
回复
看看MSDN
多线程编程中往往使用委托做异步调用
从对象设计角度来说,使用委托是为了灵活性
vrhero 2010-12-19
  • 打赏
  • 举报
回复
你看报纸吗?或者你听收音机吗?或者你看电视吗?为每个人开一家报社、建一个电台或电视台是不是更简单?

去看看MSDN,搞清楚为什么要有委托,委托是干什么的...

ps:官方翻译为委托,“代理”这个词容易混淆...

110,539

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧