delegate--小女子请教各位大虾:) "delegate"有的书称其为“委托”、有的书称其为“代理”, 谁能详细告诉我它的相关知识、以及使用方法——看书了,但不是很明白(感觉怎么两本书,两种不同的讲法……) 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 delegate应以MSDN译法为准——委托MSDN中对delegate的解释已经很清楚了,还不懂就用Google搜一下吧。 其实是一样的东西,说白了就是先声明,再实现,然后用。这样说也许说的太简单了一点,我也是最近才看.NET的,多多指教。 美女学程序,好样的!public class Class1 { delegate int DeleAdd(int a,int b); //委托声明 delegate int DeleRemove(); public Class1() { } public static void Start() { Class1 c1=new Class1(); DeleAdd add=new DeleAdd(c1.Add); //实例化委托,并指定委托方法 add+=new DeleAdd(c1.Add1); //委托梆定另一个方法 DeleRemove remove=null; remove+=new DeleRemove(c1.Remove); //初始化委托的两种方法(1、new 2、+=new) remove+=new DeleRemove(c1.Remove1); MessageBox.Show(add(10,20).ToString()); //显示 30(在Add1方法中显示的),再次显示30(函数的返回) MessageBox.Show(remove().ToString()); //显示“没有相加”、“一样没有相加”、100 } private int Add(int a,int b) { return a+b; } private int Add1(int a,int b) { MessageBox.Show(Convert.ToString(a+b)); return a+b; } private int Remove() { MessageBox.Show("没有相加"); return 0; } private int Remove1() { MessageBox.Show("一样的没有相加"); return 100; } }public class form{ Class1.Start();} 以上大家讲的都是怎么用‘委托“,但是究竟什么是’委托‘,也许没有说清楚。下面我就说下委托的知识:(声明)我所说的知识点是有根有据的!1。 委托实际上就是我们常说的"回调函数", 很多的书都有不同的翻译,但是权威的书上的翻译就是'委托'.说起委托就先讲讲'回调函数',回调函数在程序设计中用了很多年,Microsoft.NET框架使用'委托'技术来提供回调机制.也许你会问'委托有什么作用?' ,其实委托主要是来发布事件用的.因为委托可以调用多个方法,静态的,实例的都可以!2.通俗的讲,委托可以近似的看是'函数指针,我们应该很熟悉C/C++,函数指针指向一个函数的地址.(工作原因)今天只是开个头,如果想知道更详细,留个言说下,我将很欢迎您对我的信任. 委派型別 (Delegate Type) 的宣告格式如下: 複製程式碼 public delegate void TestDelegate(string message); delegate 關鍵字的用途在於宣告可封裝具名方法或匿名方法 (Anonymous Method) 的參考型別。委派大致類似 C++ 的函式指標,但是,委派型別安全 (Type-Safe) 又具有安全性。如需委派的應用程式,請參閱委派和泛型委派。備註委派是事件的基礎。將委派與具名方法或匿名方法建立關聯,即可具現化 (Instantiated) 委派。如需詳細資訊,請參閱具名方法和匿名方法。 若要搭配具名方法使用,就必須使用擁有可接受之簽名碼的方法將委派具現化 (Instantiated)。如需方法簽名碼中可允許之變異數等級的詳細資訊,請參閱委派中的 Covariance 和 Contravariance。若要搭配匿名方法使用,就要同時宣告委派以及其相關聯的程式碼。委派的這兩種具現化方法都將在此章節中討論。 複製程式碼 using System;// Declare delegate -- defines required signature:delegate void SampleDelegate(string message);class MainClass{ // Regular method that matches signature: static void SampleDelegateMethod(string message) { Console.WriteLine(message); } static void Main() { // Instantiate delegate with named method: SampleDelegate d1 = SampleDelegateMethod; // Instantiate delegate with anonymous method: SampleDelegate d2 = delegate(string message) { Console.WriteLine(message); }; // Invoke delegate d1: d1("Hello"); // Invoke delegate d2: d2(" World"); }} C# 語言規格如需詳細資料,請參閱 C# 語言規格中的下列章節:1.11 委派15 委派請參閱參考C# 關鍵字參考型別 (C# 參考)匿名方法 (C# 程式設計手冊)概念C# 程式設計手冊委派 (C# 程式設計手冊)事件 (C# 程式設計手冊)具名方法 (C# 程式設計手冊)其他資源C# 參考 若要對本產品的相關功能或是說明文件的內容提供您寶貴的建議或是指正其中的錯誤,請前往客戶意見網站。 -----------------------------------------------------------MSDN上的 delegate 就是使方法可以有象类型对象一样可以传递和赋zhi的能力 发觉只要贴子上面加上女子两字必成热门,,,即使没有分也一样...大部分都译为委托吧..很简单..委托 就是把方法当成参数来传递的一个东东..这样说你也许不知道有什么用..打个比方说.. 如果方法A要调用方法B.但方法A并不知道方法B的方法名称 (不要问,不知道B方法名称怎么调用,这就是要用到委托的地方)假设B的名称是A的一个参数那么这时可以定义一个委托..原型是这样..delegate void Bdelegate();A(Bdelegate b)//这里b就是B方法的名称了.{ b();//直接调用B方法...}如果上面还看不懂..那么可以去百度搜搜...C#中的委托和事件我也是通过这个知道的...里面讲得很明白... delegate是一种数据类型,可用于构建事件! Winform自定义控件如何执行主页面的方法 请各位好心人帮帮忙,遇到分页修改单条数据有误 如何将报销单数据生成用友财务凭证导入到用友系统中 WCF里的双程模式是长连接还是短连接? 计算机基础课怎么上 关于反射的问题,还请大家帮忙看下 B,C类分别继承A类 如何把任意一个小于100的整数,转换成八位,01表示的字符串 怎样动态添加控件???急急急!!! 我想买一台液晶显示器,以便使用VS.Net,是买17寸的好还是15寸的好? datalist绑定xml文件 求个排序算法
MSDN中对delegate的解释已经很清楚了,还不懂就用Google搜一下吧。
{
delegate int DeleAdd(int a,int b); //委托声明
delegate int DeleRemove(); public Class1()
{
} public static void Start()
{
Class1 c1=new Class1(); DeleAdd add=new DeleAdd(c1.Add); //实例化委托,并指定委托方法
add+=new DeleAdd(c1.Add1); //委托梆定另一个方法
DeleRemove remove=null;
remove+=new DeleRemove(c1.Remove); //初始化委托的两种方法(1、new 2、+=new)
remove+=new DeleRemove(c1.Remove1); MessageBox.Show(add(10,20).ToString()); //显示 30(在Add1方法中显示的),再次显示30(函数的返回) MessageBox.Show(remove().ToString()); //显示“没有相加”、“一样没有相加”、100
} private int Add(int a,int b)
{
return a+b;
} private int Add1(int a,int b)
{
MessageBox.Show(Convert.ToString(a+b));
return a+b;
}
private int Remove()
{
MessageBox.Show("没有相加");
return 0;
} private int Remove1()
{
MessageBox.Show("一样的没有相加");
return 100;
}
}public class form
{
Class1.Start();
}
下面我就说下委托的知识:
(声明)我所说的知识点是有根有据的!
1。 委托实际上就是我们常说的"回调函数", 很多的书都有不同的翻译,但是权威的书上的翻译就是'委托'.
说起委托就先讲讲'回调函数',回调函数在程序设计中用了很多年,Microsoft.NET框架使用'委托'技术来提供回调机制.
也许你会问'委托有什么作用?' ,其实委托主要是来发布事件用的.因为委托可以调用多个方法,静态的,实例的都可以!2.通俗的讲,委托可以近似的看是'函数指针,我们应该很熟悉C/C++,函数指针指向一个函数的地址.(工作原因)今天只是开个头,如果想知道更详细,留个言说下,我将很欢迎您对我的信任.
委派型別 (Delegate Type) 的宣告格式如下: 複製程式碼
public delegate void TestDelegate(string message);
delegate 關鍵字的用途在於宣告可封裝具名方法或匿名方法 (Anonymous Method) 的參考型別。委派大致類似 C++ 的函式指標,但是,委派型別安全 (Type-Safe) 又具有安全性。如需委派的應用程式,請參閱委派和泛型委派。備註
委派是事件的基礎。將委派與具名方法或匿名方法建立關聯,即可具現化 (Instantiated) 委派。如需詳細資訊,請參閱具名方法和匿名方法。 若要搭配具名方法使用,就必須使用擁有可接受之簽名碼的方法將委派具現化 (Instantiated)。如需方法簽名碼中可允許之變異數等級的詳細資訊,請參閱委派中的 Covariance 和 Contravariance。若要搭配匿名方法使用,就要同時宣告委派以及其相關聯的程式碼。委派的這兩種具現化方法都將在此章節中討論。 複製程式碼
using System;
// Declare delegate -- defines required signature:
delegate void SampleDelegate(string message);class MainClass
{
// Regular method that matches signature:
static void SampleDelegateMethod(string message)
{
Console.WriteLine(message);
} static void Main()
{
// Instantiate delegate with named method:
SampleDelegate d1 = SampleDelegateMethod;
// Instantiate delegate with anonymous method:
SampleDelegate d2 = delegate(string message)
{
Console.WriteLine(message);
}; // Invoke delegate d1:
d1("Hello");
// Invoke delegate d2:
d2(" World");
}
} C# 語言規格
如需詳細資料,請參閱 C# 語言規格中的下列章節:1.11 委派15 委派請參閱
參考
C# 關鍵字
參考型別 (C# 參考)
匿名方法 (C# 程式設計手冊)概念
C# 程式設計手冊
委派 (C# 程式設計手冊)
事件 (C# 程式設計手冊)
具名方法 (C# 程式設計手冊)其他資源
C# 參考
若要對本產品的相關功能或是說明文件的內容提供您寶貴的建議或是指正其中的錯誤,請前往客戶意見網站。 -----------------------------------------------------------
MSDN上的
(不要问,不知道B方法名称怎么调用,这就是要用到委托的地方)假设B的名称是A的一个参数那么这时可以定义一个委托..原型是这样..
delegate void Bdelegate();
A(Bdelegate b)//这里b就是B方法的名称了.
{
b();//直接调用B方法...
}如果上面还看不懂..那么可以去百度搜搜...
C#中的委托和事件
我也是通过这个知道的...里面讲得很明白...