`
JadeLuo
  • 浏览: 425845 次
  • 性别: Icon_minigender_1
  • 来自: 珠海
社区版块
存档分类
最新评论

委托的创建、实例化和调用

    博客分类:
  • C#
 
阅读更多

通过使用 Delegate 类,委托实例可以封装属于可调用实体的方法。

对于实例方法,委托由一个包含类的实例和该实例上的方法组成。

对于静态方法,可调用实体由一个类和该类上的静态方法组成。

因此,委托可用于调用任何对象的函数,而且委托是面向对象的、类型安全的。

定义和使用委托有三个步骤:

  • 声明

  • 实例化

  • 调用


C#可通过使用委托来确定在运行时选择要调用哪些函数。

以下代码演示了委托的创建、实例化和调用:

C#  复制代码 
public class MathClass
{
    public static long Add(int i, int j)       // static
    {
        return (i + j);
    }

    public static long Multiply (int i, int j)  // static
    {
        return (i * j);
    }
}

class TestMathClass
{
    delegate long Del(int i, int j);  // declare the delegate type

    static void Main()
    {
        Del operation;  // declare the delegate variable

        operation = MathClass.Add;       // set the delegate to refer to the Add method
        long sum = operation(11, 22);             // use the delegate to call the Add method

        operation = MathClass.Multiply;  // change the delegate to refer to the Multiply method
        long product = operation(30, 40);         // use the delegate to call the Multiply method

        System.Console.WriteLine("11 + 22 = " + sum);
        System.Console.WriteLine("30 * 40 = " + product);
    }
}


 

输出
11 + 22 = 33 

30 * 40 = 1200 

 

分享到:
评论

相关推荐

    很强大的泛型委托实例

    通过实际的代码示例,我们可以看到如何创建、实例化和使用泛型委托,以及它们如何帮助我们编写更简洁、更具可维护性的代码。 在“泛型委托”这个压缩包文件中,可能包含了以下内容: 1. **定义泛型委托**:首先,...

    C#线程委托中对控件的调用

    接着是委托的实例化: - `ï = new ί();` - `AppendString = new AppendStringDelegate(SetRichTextBox);` 第一行创建了一个未指定具体实现的`ί`委托实例。第二行创建了一个`AppendStringDelegate`委托实例,并将...

    C#委托实例 简单易懂

    在第二部分,我们使用Lambda表达式为委托创建一个新的实例,展示了委托的动态性。 委托在事件处理中发挥着重要作用。例如,在Windows Forms或WPF中,控件的事件通常由委托处理。下面是一个按钮点击事件的示例: ``...

    C#面向对象程序设计委托PPT与实例

    1. **基本委托示例**:一个简单的程序,演示如何声明委托、实例化并调用委托,展示委托的基本用法。 2. **比较操作**:利用委托进行比较操作,例如自定义排序规则,通过委托将比较逻辑传递给排序函数。 3. **异步...

    C#委托完整实例

    创建委托的关键步骤包括声明、实例化和调用: 1. **声明委托**:首先,我们需要定义一个委托类型,指定它能够引用的方法的返回类型和参数。例如: ```csharp public delegate void MyDelegate(string message); ...

    C#WinForm委托传值实例

    我们可以在Form1中声明一个委托,然后创建该委托类型的实例,并将其作为参数传递给Form2: ```csharp public delegate void ValueTransferDelegate(int value); // 在Form1中 private void buttonOpenForm2_Click...

    通过委托和异步调用实现窗体间的通讯

    本文将深入探讨如何利用C#中的委托和异步调用来实现这种通讯。 首先,我们需要理解什么是委托。在C#中,委托类似于函数指针,它允许我们将方法作为参数传递,或者存储一个或多个方法以便稍后调用。委托是类型安全的...

    C#委托实例简单分析与应用

    2. **实例化**:使用一个兼容的方法创建委托实例。例如,我们可以将`Test.F`静态方法赋值给`SimpleDelegate`类型的变量`d`: ```csharp SimpleDelegate d = new SimpleDelegate(F); ``` 3. **调用**:通过委托...

    举例讲解C#编程中委托的实例化使用

    在这个例子中,我们将详细探讨如何实例化和使用委托,特别是多播委托的创建。 首先,让我们了解什么是委托。在C#中,委托是一种类型,它定义了一个方法的签名,即参数列表和返回类型。这使得我们可以创建指向具有...

    精彩的委托和事件实例

    #### 实例化与调用 接下来,我们创建了委托的实例,并将一个方法绑定到这个实例上: ```csharp z.PlayGame += new PlayGameHandler(w.Ǯ); ``` 这里,`PlayGame`是一个事件,`w.Ǯ`是一个方法。通过使用加号...

    c#中的委托及其调用

    - **实例化另一个委托**: ```csharp MyDelegate anotherDelegate = new MyDelegate(myDelegate); ``` ##### 3. 使用委托 调用委托的方法非常简单: ```csharp int result = myDelegate(10, 20); ``` 在这个...

    csharp委托和事件实例

    然后,我们可以在类或方法中声明和实例化委托,并将其指向一个或多个方法。例如: ```csharp public class MyClass { public event MyDelegate MyEvent; public void AttachHandler(MyDelegate handler) { ...

    .net C# 委托 调用事件

    使用new操作符可以实例化一个委托对象,然后将一个或多个符合委托签名的方法绑定到这个对象。例如: ```csharp MyEventHandler myEvent = new MyEventHandler(ShowMessage); ``` 其中`ShowMessage`是一个符合`...

    vb.net多线程通过Deletgrate委托调用传递参数.rar

    在VB.NET编程中,多线程处理是提升应用程序性能的重要技术。当需要执行大量耗时操作,如数据处理、网络请求或I/O操作时,多线程可以避免阻塞...理解并掌握委托调用和多线程传递参数是每个VB.NET开发者必备的技能之一。

    C#创建委托

    一旦声明了委托类型,就可以通过实例化该类型来创建委托对象。例如,根据上面的委托声明,可以通过以下方式创建委托实例: ```csharp MyDelegate dispStr = new MyDelegate(Hello); ``` 这里,`dispStr`是一个`...

    c# 委托和事件实例学习代码分析全集.

    通过上述分析,我们可以清晰地理解委托和事件的定义、创建、实例化以及使用方法,这对于深入掌握C#编程语言具有重要意义。此外,通过实践这种方式,可以帮助开发者更好地理解和运用这些高级特性,在日常开发工作中...

    C#跨窗体更新-委托实例

    - 委托实例化:通过传递一个方法到委托构造函数,可以创建一个委托实例,该实例可以调用指定的方法。 - 委托多播:一个委托实例可以同时关联多个方法,形成多播委托,这样一次调用可以触发多个方法执行。 2. **...

    c#调用MFC动态库实例

    3. 实现数据结构的序列化和反序列化,因为C#和C++的数据类型可能不完全匹配。 4. 调用DLL中的函数,并传递必要的参数,包括回调函数和数据结构。 在数据通信方面,C#和C++之间可能会涉及字符串、数组或其他复杂数据...

    委托 实例窗体互动 C#

    2. **实例化委托** 要创建一个委托实例,你需要定义一个方法,该方法的签名与委托类型匹配,然后通过`.Invoke()`或`.BeginInvoke()`方法调用委托实例来执行这些方法。例如: ```csharp public delegate void ...

Global site tag (gtag.js) - Google Analytics