您现在的位置是:首页 >动态 > 2024-04-29 21:27:29 来源:

委托律师的费用标准(委托)

导读 大家好,我是小夏,我来为大家解答以上问题。委托律师的费用标准,委托很多人还不知道,现在让我们一起来看看吧!1、引言2、  委托是一个...

大家好,我是小夏,我来为大家解答以上问题。委托律师的费用标准,委托很多人还不知道,现在让我们一起来看看吧!

1、引言

2、  委托是一个类,它定义了方法的类型,使得可以将方法当作另一个方法的参数来进行传递,这种将方法动态地赋给参数的做法,可以避免在程序中大量使用If-Else(Switch)语句,同时使得程序具有更好的可扩展性。

3、  委托初识

4、  我们知道委托是一个引用类型,所以他具有引用类型所具有的通性。他保存的不是实际值,而是保存对存储在托管堆(managed heap)中的对象的引用。那他保存的是对什么的引用呢?委托保存的是对函数(function)的引用。   对学过C/C++的人,是不是觉得跟函数指针很像呢!其实他们是有区别的,在非托管C/C++中,函数的地址就是一个内存地址。该地址不会携带任何额外的信息,例如函数期望的参数个数、参数类型、函数的返回值类型及函数的调用约定。总之,非托管C/C++中函数指针是非类型安全的。而.NET中的委托是类型安全的,委托会检测他所保存的函数引用是否和声明的委托匹配。

5、  委托本质

6、  在C#中使用delegate关键字定义委托,然后使用我们熟悉的函数调用的语法来调用委托,如上述例子中的cb(“skynet”,23)。在这简单的表象背后,.NET编译器为我们做了什么呢?   可以知道定义CallBack委托时,编译器为我们做了如下工作,实际上定义任何委托编译器都会做如下工作:   声明一个类,对应上图中的.class nested public auto ansi sealed。   该类扩展自System.MutlicastDelegate,对应上图中的extends [mscorlib]System.MutlicastDelegate。   该类包含一个构造器,对应上图中的.ctor: void(object ,native int)。   该类包含三个方法,分别是BeginInvoke、EndInvoke、Invoke。

7、  委托类

8、  当我们用delegate关键字声明委托时,编译器自动为我们生成如图2所示的类。类的名字即为委托变量名,访问类型为定义的委托访问类型。如上例中,public delegate void CallBack(string name, int number);定义的委托对应的类为CallBack,访问类型为public,该类继承自[mscorlib]System.MutlicastDelegate。如果我们定义委托的访问类型为private或者protected,则对应的委托类的访问类型为private或者protected。但是任何委托都继承自[mscorlib]System.MutlicastDelegate。

本文到此讲解完毕了,希望对大家有帮助。