如何在C#中声明和实例化委托?

如何在c#中声明和实例化委托?

C# 委托类似于 C 或 C++ 中的函数指针。委托是一个引用类型变量,它保存对方法的引用。可以在运行时更改引用。

声明委托的语法 –

delegate   

现在让我们看看如何在 C# 中实例化委托。

声明委托类型后,必须使用 new 关键字创建委托对象并将其与特定方法关联。创建委托时,传递给新表达式的参数的编写方式类似于方法调用,但没有方法的参数。

public delegate void printString(string s);...printString ps1 = new printString(WriteToScreen);printString ps2 = new printString(WriteToFile);

以下是在 C# 中声明和实例化委托的示例 –

示例

 现场演示

using System;delegate int NumberChanger(int n);namespace DelegateAppl {   class TestDelegate {      static int num = 10;      public static int AddNum(int p) {         num += p;         return num;      }      public static int MultNum(int q) {         num *= q;         return num;      }      public static int getNum() {         return num;      }      static void Main(string[] args) {         //create delegate instances         NumberChanger nc1 = new NumberChanger(AddNum);         NumberChanger nc2 = new NumberChanger(MultNum);         //calling the methods using the delegate objects         nc1(25);         Console.WriteLine("Value of Num: {0}", getNum());         nc2(5);         Console.WriteLine("Value of Num: {0}", getNum());         Console.ReadKey();      }   }}

输出

Value of Num: 35Value of Num: 175

以上就是如何在C#中声明和实例化委托?的详细内容,更多请关注创想鸟其它相关文章!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 chuangxiangniao@163.com 举报,一经查实,本站将立刻删除。
发布者:程序猿,转转请注明出处:https://www.chuangxiangniao.com/p/1435182.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2025年12月17日 10:50:21
下一篇 2025年12月16日 13:14:55

相关推荐

  • 什么是 Kestral C# Asp.net Core?

    Kestrel 是 ASP.NET Core 的跨平台 Web 服务器。 .NET Core 支持的所有平台和版本都支持它。 它默认作为内部服务器包含在 ASP.NET Core 中。 Kestrel 本身可以用作边缘服务器,即面向 Internet 的 Web 服务器,可以直接处理来自客户端的传入…

    2025年12月17日
    000
  • C# 中的重写和隐藏有什么区别?

    以下是重写和隐藏之间的区别 – 隐藏重新定义了完整的方法,而重写仅重新定义了方法的实现。 在重写中,您可以使用子类的对象重写方法来访问基类。影子无法访问子类方法。 阴影也称为方法隐藏。父类的方法可供子类使用,无需在遮蔽中使用 override 关键字。子类有自己版本的相同函数。 在重写下…

    2025年12月17日
    000
  • 检查 HashTable 集合是否为空的 C# 程序

    C#中的Hashtable集合是根据键的哈希码组织的键值对的集合。哈希码是使用哈希码函数计算的。 哈希表中的每个元素都是具有唯一键的键值对。键也必须是非空的。值可以为空和重复。 在本文中,我们将讨论如何检查哈希表集合是否为空。 如何检查哈希表集合是否为空? C#中实现哈希表集合的类是Hashtabl…

    2025年12月17日
    000
  • 将一个哈希表中的项目替换为另一个哈希表中的 C# 程序

    C# 中的哈希表集合是基于键的哈希码组织的键值对的非泛型集合。键用于访问哈希表集合中的元素。散列可以帮助我们有效地检索数据并消除对昂贵的数据搜索技术的需要。散列技术使用密钥本身来定位数据。该哈希表键是不可变的,并且哈希表中不允许出现重复的条目。 Hashtable类定义在System.Collect…

    2025年12月17日
    000
  • 如何使用 C# 获取人类可读的文件大小(以字节缩写为单位)?

    要获取目录,C# 提供了 Directory.GetDirectories 方法 Directory.GetDirectories 返回指定目录中与指定搜索模式匹配的子目录的名称(包括其路径),并可选择搜索子目录 为了获取文件,C# 提供了 Directory.GetFiles 方法 Directo…

    2025年12月17日
    000
  • C# 中的后台工作者类

    顾名思义,Background Worker 类允许您设置一个在后台持续运行的线程,并在需要时与主线程进行通信。 BackgroundWorker在 Windows 窗体中实现线程。密集型任务需要在另一个线程上完成,这样 UI 才不会冻结。任务完成后有必要发布消息并更新用户界面。 Backgroun…

    2025年12月17日
    000
  • 在 C# 中声明 const 数组

    在C#中,使用readonly来声明一个const数组。 public static readonly string[] a = { “Car”, “Motorbike”, “Cab” }; 在readonly中,与const不同的是,您也可以在运行时设置值。 实现上述内容的另一种替代方法是 − p…

    2025年12月17日
    000
  • 如何重载 C# 中的运算符?

    [] 运算符被称为索引器。 索引器允许对对象进行索引,例如数组。当您为一个类定义一个索引器时,该类的行为类似于一个虚拟数组。然后,您可以使用数组访问运算符([ ])访问该类的实例。 索引器可以被重载。索引器也可以声明多个参数,并且每个参数可以是不同的类型。索引不一定必须是整数。 示例1 static…

    2025年12月17日
    000
  • C# 中的静态构造函数是什么?

    静态构造函数是使用 static 修饰符声明的构造函数。它是类中执行的第一个代码块。这样,静态构造函数在类的生命周期中只执行一次。 以下是 C# 中静态构造函数的示例 – 示例 using System;using System.Collections.Generic;using Sys…

    2025年12月17日
    000
  • C# 中的 Console.TreatControlCAsInput 属性及示例

    在C#中,Console.TreatControlCAsInput属性是Console类的一个关键组成部分,它允许开发人员以更灵活的方式处理输入。本文将深入探讨Console.TreatControlCAsInput属性,帮助您了解其目的、用法,并提供实际示例。 了解 Console.TreatCo…

    2025年12月17日
    000
  • C# 中给定字符串中的单词反转

    假设以下是字符串 – Welcome 翻转字符串后,单词应该像 − 这样可见。 emocleW 使用reverse()方法并尝试以下代码来反转字符串中的单词 – 示例 using System;using System.Linq;class Demo { static voi…

    2025年12月17日
    000
  • C# 中的日志函数

    使用C#,您可以轻松地使用对数。它具有以下用于对数和以10为底的对数的方法。 序号 方法和描述 1Log(Double) 返回指定数字的自然(以e为底)对数。 2Log(Double, Double) 返回指定数字在指定底数下的对数。 3Log10(Double) 返回指定数字的以10为底的对数。 …

    2025年12月17日
    000
  • C# 中的对象池是什么?

    对象池是一种软件构造,旨在优化有限资源的使用。它有可供使用的对象。 池中的对象可以重复使用。对象池有两种形式: 激活对象时,将其从池中拉出。停用时,将对象添加到对象池中。 通过应用 ObjectPoolingAttribute 属性来配置对象池。 这适用于从 System.EnterpriseSer…

    2025年12月17日
    000
  • C# 中的静态类是什么?

    C# 静态类无法实例化,只能有静态成员。 C# 中的静态类是密封的,不能包含实例构造函数。 以下是包含静态类和静态成员的示例 – 示例 using System;public static class Demo { public static float PI = 3.14f; publ…

    2025年12月17日
    000
  • 如何在 C# 中创建 5 元组或五元组?

    Tuple 类表示一个 5 元组,称为五元组。元组是一种具有元素序列的数据结构。 它有五个属性 – Item1 − 获取当前 Tuple 对象的第一个组件的值。 Item2 − 获取值当前 Tuple 对象的第二个组件。 Item3 − 获取当前 Tuple 对象的第三个组件。 Item…

    2025年12月17日
    000
  • SQL Server 数据类型的 C# 等效项是什么?

    下表显示了 SQL Server 数据类型的 C# 等效项 – SQL Server 数据类型 等效的 C# 数据类型 varbinaryByte[]二进制字节[]图像无varchar无char无nvarchar字符串,Char[]nchar字符串,Char[]文本无ntext无行版本字…

    2025年12月17日
    000
  • 如何在 C# 中将元组初始化为空元组?

    将元组初始化为空元组 – Tuple myTuple; 如果您想检查元组中的值,即它是否为 null – 示例 using System;namespace Demo { class Program { static void Main(string[] args) { Tu…

    2025年12月17日
    000
  • C# 中 IEnumerable 和 IQueryable 有什么区别?

    IEnumerable 存在于 System.Collections 命名空间中。IQueryable 存在于 System 中。 Linq 命名空间。IEnumerable 和 IQueryable 都是正向集合。IEnumerable 不支持延迟加载IQueryable 支持延迟加载从数据库查询…

    2025年12月17日
    000
  • 如何处理中间件 C# Asp.net Core 中的错误?

    创建一个名为 CustomExceptionMiddleware 的新文件夹和一个类ExceptionMiddleware.cs 位于其中。 我们需要做的第一件事是注册 IloggerManager 服务并通过依赖注入实现RequestDelegate。 RequestDeleagate类型的_ne…

    2025年12月17日
    000
  • C#中如何将字符串转换为int?

    假设我们的字符串是 – string str =”9999″; 现在,使用 Int32.Parse() 将字符串转换为整数 – int n = Int32.Parse(str); 现在显示整数值,如以下代码所示 – 示例 using System;class De…

    2025年12月17日
    000

发表回复

登录后才能评论
关注微信