日期:2014-05-18  浏览次数:20862 次

委托的解释?
委托是类还是其他?

------解决方案--------------------
指向函数的指针
------解决方案--------------------
我的理解:委托是函数地址指针,你用Ildsm看一下IL代码会发现,是一个类
------解决方案--------------------
http://blog.csdn.net/acewang/archive/2004/08/02/58394.aspx
------解决方案--------------------
编译器看到你用delegate定义一个新的委托时,它就会在背后生成许多代码,而且,你这个委托类型是变成了一个类型
------解决方案--------------------
委托是一种引用数据类型,它的实例能够封装与其签名相匹配的类的静态方法引用或类的实例方法引用

委托类似于C 或 C++ 中的函数指针。然而,函数指针只能引用静态函数,而委托可以引用静态方法和实例方法

所有委托都是从System.Delegate继承而来的,并且有一个调用列表,这是在调用委托时所执行的方法的一个链接列表。
------解决方案--------------------
http://blog.joycode.com/percyboy/archive/2005/01/22/43435.aspx
事件模型可以参考一下
------解决方案--------------------
這個問題,如果你要把委撬說成是類,本也沒有錯,但你要做好挨罵的心里准備,說她是接口也好像沒有錯。呵呵.....
技朮這東西..

------解决方案--------------------
C#委托事件
在C#中使用一个类时,分两个阶段.首先需要定义这个类,即告诉编译器这个类由什么字段和方法组成.然后(除非只使用静态方法)实例化类的一个对象.使用委托时,也需要经过这两个步骤.首先定义要使用的委托,对于委托,定义它就是告诉编译器这种类型代表了那种类型的方法,然后创建该委托的一个或多个实例.定义委托是从delegate开始的然而它是如何运作的呢.也许弄个鼠标事件会容易理解一些,这里还是拿出书中的例子来.
using System;
namespace Wrox.ProfCSharp.AdvancedCSharp
{
delegate bool CompareOp( object lhs, object rhs );
class MainEntryPo
int
{
static void Main( )
{
Employee [] employees =
{
new Employee( "Karli Watson ", 20000 ),
new Employee( "Bill Gates ", 10000 ),
new Employee( "Simon Robinson ", 25000 ),
new Employee( "Mortimer ", ( decimal )1000000.38 ),
new Employee( "Arabel Jones ", 23000 ),
new Employee( "Avon from 'Blake 's 7 ' ", 50000 )
}
;
CompareOp employeeCompareOp = new CompareOp( Employee.RhsIsGreater );
BubbleSorter.Sort( employees, employeeCompareOp );
for ( int i=0 ;
i <employees.Length ;
i++ )
Console.WriteLine( employees[i].ToString( ) );
Console.ReadLine( );
}
}
class Employee // : object
{
private
string name;

private decimal salary;

public Employee( string name, decimal salary )
{
this.name = name;

this.salary = salary;
}

public override
string ToString( )
{
return
string.Format( name + ",
{
0:C
}
", salary );
}

public static bool RhsIsGreater( object lhs, object rhs )
{
Employee empLhs = ( Employee ) lhs;
Employee empRhs = ( Employee ) rhs;
return ( empRhs.salary > empLhs.salary ) ? true : false;
}
}
class BubbleSorter
{
static
public void Sort( object [] sortArray, CompareOp gtMethod )
{
for ( int i=0 ;
i <sortArray.Length ;
i++ )