`
esperanza
  • 浏览: 183400 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

[转] 代表 delegate

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

 它是C#语言里面的函数指针,代表可以指向某一个函数,在运行的时候调用这个函数的实现。下面来看看它的实现步骤:

  1. 声明一个delegate对象。
  2. 实现和delegate具有相同参数和返回值的函数实现(可以是静态和非静态的)。
  3. 产生一个delegate对象的时候,把你刚刚实现的函数作为参数传给他的构造函数。

请看下面例子:

using System;
using System.Collections.Generic;
using System.Text;

namespace UsingDelegate
{
    public delegate void MyDelegate(string mydelegate);//声明一个delegate对象

    public class TestClass
    {

        //实现有相同参数和返回值的函数
        public void HelloDelegate(string mydelegate)
        {
            Console.WriteLine(mydelegate);
        }

       //实现有相同参数和返回值的静态函数

        public static void HelloStaticDelegate(string mystaticdelegate)
        {
            Console.WriteLine(mystaticdelegate);
        }
    }

    class Program
    {
        static void Main(string[] args)
        {
            TestClass testClass = new TestClass();
            MyDelegate mydelegate = new MyDelegate(testClass.HelloDelegate);//产生delegate对象
            mydelegate("Hello delegate");//调用

            MyDelegate myStaticDelegate = new MyDelegate(TestClass.HelloStaticDelegate);//产生delegate对象
            myStaticDelegate("Hello static delegate");//调用
        }
    }
}

分享到:
评论

相关推荐

    Matrix_Delegate.rar_android

    `Matrix_Delegate`涉及到的是一个C/C++原生实现,用于支持`android.graphics.Matrix`类在Java层的功能。这里我们将深入探讨`Matrix`类以及`Delegate`模式在Android中的应用。 `Matrix`类主要包含以下关键方法: 1....

    iOS 转盘效果,抽奖转盘

    转盘通常由多个扇形区域组成,每个区域代表不同的选项或奖项。当用户触发抽奖事件时,转盘会以动画形式旋转,最终停在某个奖项上。这个过程需要结合Core Animation框架来实现,利用CAAnimation来创建旋转动画。 在...

    AVSpeechSynthesizer iOS7 文本转语音

    为了进行文本转语音,我们需要创建一个AVSpeechUtterance对象,它代表要合成的一段语音。AVSpeechUtterance有一个初始化方法,接受一个NSString参数,即要转换为语音的文本: ```objc AVSpeechUtterance *utterance...

    C# 数据类型和转换

    - 泛型允许创建可应用于多种类型的代码,如List,T代表任意类型,增强了代码的重用性。 总之,理解并熟练掌握C#中的数据类型和转换对于编写高效、可靠的代码至关重要。在实际编程中,要根据需求合理选择数据类型,...

    Tetris_俄罗斯方块_游戏开发

    在《俄罗斯方块》中,我们可能会定义一个delegate来代表游戏的更新事件,例如每帧更新屏幕、检测行消除等。当这个事件触发时,关联的事件处理函数会被调用,确保游戏的流畅运行。 Event是delegate的扩展,用于实现...

    c#2_0匿名方法四(转)

    匿名方法的语法特点是使用`delegate`关键字创建一个代表方法签名的委托类型,然后直接在该委托类型的实例化过程中提供方法体。在C#2.0中,匿名方法的语法如下: ```csharp delegate returnType delegateName...

    Conv:转换智能比UIKit更能代表UICollectionView数据结构

    转换转换智能比UIKit更能代表UICollectionView数据结构。 UICollectionView DataSource和Delegate方法的简单定义。 而Conv快速重新加载以使用基于Paul Heckel算法的差异算法。 插入和删除移动项目和部分 Conv(称为...

    qml简单示例

    红绿灯的实现通常涉及多个颜色变化的`Rectangle`或`Image`组件,代表不同颜色的灯泡。QML中的`State`和`Transition`可以用来管理不同状态间的转换,比如从红色变为绿色再变为黄色。通过`SequentialAnimation`或`...

    C# 泛型参数转换

    泛型允许我们在定义类型时使用类型参数,例如`List<T>`,这里的`T`就是一个类型参数,代表任何引用类型或值类型。这样,我们就可以创建不同类型的列表,如`List<int>`、`List<string>`等,它们各自独立,互不影响。 ...

    Swift多种屏幕旋转方式

    iOS 8引入了Trait Collections,它们代表了UI环境的特性,包括屏幕尺寸、方向等。可以监听`traitCollectionDidChange`通知来响应屏幕方向的变化。 ```swift override func traitCollectionDidChange(_ ...

    C#学习体会

    我们可以声明一个指向int类型函数原型的代表,并将其实例化为一个静态方法或非静态方法。 5. 数组 数组的声明格式为:non-array-type [ dim-separators ] array-instance name。例如: ```csharp int[] arr; ``` 6...

    iOS 自动轮播图片

    它是一个小型的控件,显示为一系列圆点,每个圆点代表一张图片。当用户滚动或自动切换时,圆点会根据当前显示的图片进行更新。 4. **NSTimer**与**CADisplayLink**: 自动轮播的核心是定时器,可以使用NSTimer或者更...

    正则一则 将金额转换成人民币大写的代码

    这里的每个字符代表一个特定的数字位置,例如`L`代表万,`E`代表亿等,而`.0B0A`则用于处理小数点和两位小数。 然后,代码使用`Regex.Replace`方法,通过正则表达式处理字符串`s`,将非数值字符(如分隔符)替换为...

    C#在C++中注册回调函数

    这个委托将代表我们要在C++中调用的函数。例如: ```csharp public delegate void MyCallback(string message); ``` 然后,我们创建一个类并实现这个委托类型的方法: ```csharp public class CallbackClass {...

    [iOS]iPhoto的删除动画(转)

    1. **理解CALayer**:CALayer是Core Animation的基础,代表屏幕上的一个可视化元素。你可以设置其frame、bounds、transform等属性来改变其位置、大小和形状。在动画过程中,我们可以改变这些属性来实现平移、旋转、...

    C# CSharp 中所有关键字

    byte 关键字代表一种整型。类型范围:(0 到 255);大小:无符号 8 位整数;.NET Framework 类型:System.Byte;例如:byte y =(byte)3.0; switch switch case 语句是一个控制语句,它通过将控制传递给其体内的一个 ...

    C# Language Specification 2.0

    泛型类声明中的类型形参是指在泛型类声明时使用的占位符,它们代表了将在实例化时提供的实际类型。例如,在 `Stack<T>` 中,`T` 就是一个类型形参。 **2.2.2 实例类型** 实例类型指的是泛型类实例化的具体类型。...

    C#基本语法简单教程,推荐

    代表(delegate)可以看作是函数的引用,它可以指向一个或多个方法,用于事件处理。数组是一系列相同类型的元素集合,分为一维、二维和多维数组,如`int[] arr = new int[5]`。 最后,我们谈谈装箱和拆箱的概念。...

    C#类库详细说明_编程_技术

    - **3.5 Delegate**: 定义了委托类型的基类,委托是一种引用方法的类型。 - **3.6 Exception**: 所有异常类的基类,用于表示程序执行期间出现的问题。 - **3.7 MarshalByRefObject**: 一个抽象基类,用作所有可以从...

    ios-界面传值.zip

    当从界面A转到界面B时,可以将A中文本框的值赋给B的一个属性,从而实现数据的传递。 ```swift // 在界面A中 class ViewControllerA: UIViewController { @IBOutlet weak var textField: UITextField! override ...

Global site tag (gtag.js) - Google Analytics