为什么使用“new DelegateType(Delegate)”?

2024-04-19

好吧,假设您在某个类中定义了一个委托。

public delegate void StringDelegate (string s);

另一个类实现了一个方法:

public static void StringWriter (string s) {...}

在我正在阅读的《Programming C#》第四版中,他们使用new关键字,例如:

ClassDelegate.StringDelegate writer;
writer = new ClassDelegate.StringDelegate (DelegateImplementer.StringWriter);
writer("Hello");

但是,我发现也可以通过这种方式调用委托方法

ClassDelegate.StringDelegate writer;
writer = DelegateImplementer.StringWriter;
writer ("Hello");

有什么不同?当我可以简单地传递或引用方法委托的签名时,为什么我要实例化并创建对象委托。


这两种说法完全没有区别。writer = DelegateImplementer.StringWriter;仍然创建一个delegate目的;编译器将生成new ClassDelegate.StringDelegate ()为你。这只是一个更清晰的语法C# 2.0 中添加 http://msdn.microsoft.com/en-us/library/ms173176%28v=vs.80%29.aspx.

正如 @Ben Voigt 在他的回答中提到的那样,仅在 C# 2.0 中需要,其中编译器无法推断委托的类型,当使用控制.调用() http://msdn.microsoft.com/en-us/library/zyzhdc6b.aspx例如。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

为什么使用“new DelegateType(Delegate)”? 的相关文章

  • 元组在 VS2012 中如何工作?

    Visual Studio 2012 功能 tuples但不是可变参数模板 这是如何完成的 如何在不使用可变模板的情况下实现元组 简而言之 微软做了与之前在 NET 中实现类似元组的数据类型完全相同的事情 创建许多版本 每个版本都有固定数量
  • C free() 是如何工作的? [复制]

    这个问题在这里已经有答案了 可能的重复 malloc 和 free 如何工作 https stackoverflow com questions 1119134 how malloc and free work include
  • 将设置函数(setter)标记为 constexpr 的目的是什么? [复制]

    这个问题在这里已经有答案了 我无法理解将 setter 函数标记为的目的constexpr 自 C 14 起这是允许的 我的误解来自以下情况 我使用 constexpr c tor 声明一个类 并且我将通过创建该类的 constexpr 实
  • 如何以编程方式播放 16 位 pcm 数组 [关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 我有一个包含 16 位 pcm 值的短 数组 我希望能够在不添加任何标题 也不将任何文件保存到内存的情况下播放它 我知道我可能需要一个提供
  • C++ 将联合强制转换为其成员类型之一

    以下对我来说似乎完全符合逻辑 但不是有效的 C 联合不能隐式转换为其成员类型之一 有人知道为什么不这样做的充分理由吗 union u int i char c function f int i int main u v v i 6 f v
  • 带有运算符语法的错误消息,但不带有函数语法的错误消息

    为什么我在调用 unary 时收到错误消息 使用运算符语法 如果我用函数语法调用它就可以了 现场演示 https godbolt org z j7AbeQ template
  • while循环中的变量初始化

    我有一个可以分块读取文件的函数 public static DataObject ReadNextFile 数据对象看起来像这样 public DataObject public string Category get set And ot
  • 静态类与类的实例

    我有一个静态类 用于访问我的公共属性 整个应用程序的全局属性 和我在应用程序运行期间使用的方法 例如 我在静态类中设置了一些属性 并且在应用程序运行时我可以从属性中获取值 但我可以使用单例模式创建非静态类并以相同的方式使用它 问题 对于我的
  • 你好,我最近正在开发我的新游戏,我遇到了*无限跳跃*的问题

    所以基本上当我按跳跃 空格键时我会跳跃但是如果我连续按空格键它 只是跳啊跳啊跳等等 我不想要我只想它跳一次 code if Input GetKeyDown space isGrounded velocity y Mathf Sqrt ju
  • 子目录中的头文件(例如 gtk/gtk.h 与 gtk-2.0/gtk/gtk.h)

    我正在尝试使用 GTK 构建一个 hello world 其中包括以下行 include
  • 用于连接 DataTable 上的动态列的动态 LINQ

    我目前遇到的情况不确定如何继续 我有两个从数据库填充的数据表 我还有一个可用的列名称列表 可用于将这两个数据表连接在一起 我希望编写一组 LINQ 查询 这些查询将 显示两个数据表中的行 内部联接 用于从一个数据表更新另一个数据表 显示一个
  • 如何在 C# 中获取 Json 数组?

    我有一个像这样的 Json 字符串 我想将它加载到 C 数组中 当我尝试这样做时 我收到异常 我的字符串 customerInformation customerId 123 CustomerName Age 39 Gender Male
  • 将错误代码映射到 C++ 中的字符串

    将错误代码从枚举映射到字符串的更有效方法是什么 在 C 中 例如 现在我正在做这样的事情 std string ErrorCodeToString enum errorCode switch errorCode case ERROR ONE
  • C++ 到 C# 事件处理

    所以我有我的C WinForm 应用程序 我从中调用我的C CLI MFC dll图书馆 但也有一些events在我的 C 库上 甚至此事件也发生在该库的本机 非 CLI 部分 我需要从我的 C 应用程序调用一些代码 并获取一些有关此事件的
  • 为什么 f(i = -1, i = -1) 是未定义的行为?

    我正在读关于违反评估顺序 http en cppreference com w cpp language eval order 他们举了一个令我困惑的例子 1 如果标量对象上的副作用相对于同一标量对象上的另一个副作用是无序的 则行为未定义
  • Xamarin.Forms UWP 项目中标题栏和选项卡之间令人恼火的空白

    我几乎是新手Xamarin Forms我正在开发一个相当简单的跨平台应用程序 该应用程序在 Android 中显示得足够好 但在 UWP 中却出现了一个愚蠢的空白 该项目由一个 TabbedPage 组成 其中包含 4 个 Navigati
  • 如何将 int 作为“void *”传递给线程启动函数?

    我最初有一个用于斐波那契变量数组的全局变量 但发现这是不允许的 我需要进行基本的多线程处理并处理竞争条件 但我无法在 pthread 创建中将 int 作为 void 参数提供 我尝试过使用常量指针 但没有成功 由于某些奇怪的原因 void
  • “必须声明标量变量”错误[重复]

    这个问题在这里已经有答案了 必须声明标量变量 Id SqlConnection con new SqlConnection connectionstring con Open SqlCommand cmd new SqlCommand cm
  • 无法识别解决方案文件夹中的 Visual Studio 2017 Nuget.config

    我在使用 Visual Studio 2017 时遇到问题 新的解决方案不断引用 C Users yopa AppData Roaming NuGet Nuget config 中意外位置的 Nuget config 文件 我已将 nuge
  • 如何在c linux中收听特定接口上的广播?

    我目前可以通过执行以下操作来收听我编写的简单广播服务器 仅广播 hello int fd socket PF INET SOCK DGRAM 0 struct sockaddr in addr memset addr 0 sizeof ad

随机推荐

  • Logstash 错误 Java::JavaLang::NoClassDefFoundError 无法解决

    我是elasticsearch ES 和logstash 的新手 我已经使用它成功设置了elasticsearch和kibanalink https www youtube com watch v hVgrXi 9L6Y 之后我尝试使用lo
  • 如何在谷歌自定义菜单中制作图标[重复]

    这个问题在这里已经有答案了 在 Google 应用程序中 文档 表格等 是否可以使自定义菜单中的图标与插入菜单中的图标相似 如果是这样我该怎么办 html 服务 图表 链接 图像旁边 甚至粗体 斜体等旁边的内容 Thanks 没有公开的方法
  • 如何将秒转换为 hhmmss

    我到处寻找将秒转换为 hh mm ss 但找不到合适的 我创建了一个程序 允许用户输入两个不同的时间 然后计算差异 输入的时间以 hh 3600 mm 60 ss 分割 然后转换为秒并相互减去以计算秒差 例如 12 12 12 和 13 1
  • 如何确定两个泛型类型值是否相等?

    Update 我很抱歉 我的示例代码包含一个错误 导致很多我不理解的答案 代替 Console WriteLine 3 this Equals go1 Equals go2 我本来想写 Console WriteLine 3 this Eq
  • 更改 Android 操作栏菜单项的点击图标

    我正在使用 Sherlock 操作栏 我的操作栏上有 2 个项目 当选择该项目 活动 时 我想更改图标的图像 这是我的Java代码 Override public boolean onPrepareOptionsMenu Menu menu
  • Jquery - DataTables [tableTools]:仅导出可见行

    我刚刚开始使用 jQuery DataTables 使用DataTables的tableTools 是否可以仅导出可见行而不是所有行 例如 如果分页设置为 10 我预计只会导出 10 行 搜索结果也是如此 这是代码的一部分 document
  • BMP280 ServiceSpecificException:I/O 错误(代码 5)

    我尝试使用 AndroidThings 来测量 Raspberry Pi 3 和 BMP280 的温度 我选择3 3V是因为BMP280规格 https learn adafruit com adafruit bmp280 barometr
  • 如何将可以为 null 的值或数组隐式包装到 Scala 选项中

    我在 Jar 文件中包含这个 Java 类 作为 Scala 程序的依赖项 如 Axis jar class MyClass private String someStrings public String getSomeStrings r
  • 将 OnItemSelectedListener 添加到 Spinner

    我有一个按钮和一个微调器 最初是隐藏的 当用户按下按钮时 微调器会填充项目并变得可见 现在我想将 OnItemSelectedListener 添加到微调器中 我尝试了很多教程但没有运气 这是我的 OnCreate 函数 public vo
  • Seaborn 直方图与大数据

    我正在尝试绘制 300 万行大数据集的漂亮直方图 我有 2CPU 16GB RAM 尽管我提供了垃圾箱 但我从未得到过任何线索 有没有更有效的方法来绘制直方图 请参阅下面的代码 df0 dd read csv filename sep he
  • 使用正则表达式清除工作区中的变量(例外)

    我想清除工作区中的所有变量 但有一些由正则表达式定义的例外 功能clear有一个附加选项 regexp clear regexp expr1 exprN清除与任何一个匹配的所有变量 列出的正则表达式 该选项仅清除变量 所以我正在寻找相反的东
  • 快速应用图像的 uibutton 动画

    我想通过依次更改按钮上的两个图像来应用动画效果 我已经应用了以下代码 但无法看到动画效果 我已经正确应用了 IBOutlets var image1 UIImage UIImage named img mic off var image2
  • Google应用程序脚本复制文档页面

    我在 Google 文档中有一个包含一页的模板文档 我想创建一个新文档 其中 N 页每页都与模板文档中的一页相同 我怎样才能做到这一点 请看一下这个帖子 https stackoverflow com questions 10692669
  • 错误:系列'对象没有属性'包含'”

    我搜索 DataFrame 的所有列 第一列除外 并添加一个带有匹配列名称的新列 Matching Columns 当我尝试在测试我的模式是否包含在一行中之前删除所有点时 我收到错误 这有效 keyword 123456789 f lamb
  • iPhone - 可以不显示键盘但仍然在 UITextField 中显示光标吗?

    我有一个自定义键盘 我想在用户点击 UITextField 时显示 但同时我想在文本字段中显示光标 如果为 canBecomeFirstResponder 返回 NO 则它不会显示默认键盘 但也不显示光标 有人可以帮我吗 Thanks 您问
  • 如何去掉 CR (^M) 并保留 LF (^J) 字符?

    我正在尝试使用 Hexl 模式手动从文本文件中删除一些特殊字符 但不知道如何在 Hexl 模式下删除任何内容 我真正想要的是删除回车符并保留换行符 Hexl 模式是执行此操作的正确方法吗 无需寻找替代 就用吧 M x delete trai
  • 该文件无法打开,因为您无权查看它(真实设备)

    我知道有人问过类似的问题 但我找不到任何可以解决我的问题的东西 就我而言 我开发了一个 iOS 应用程序 Xcode 13 4 用于从我使用选择的 CSV 文件导入和解析数据UIDocumentPickerViewController 在模
  • 是否应该尝试防范 MVC 视图中的空引用异常/索引越界异常?

    我想发表评论这个问题的 https stackoverflow com questions 1005819 can we unit test view v of mvc接受的答案 现在视图不是已经放弃了后面的代码了吗 那么你要测试什么 指出
  • 在tensorboard中创建日志目录

    我正在尝试学习如何使用张量板 我希望它在我的程序中运行 我不明白如何创建日志目录 这些是我运行张量板的线路 summary writer tf train SummaryWriter tensorflow logdir sess graph
  • 为什么使用“new DelegateType(Delegate)”?

    好吧 假设您在某个类中定义了一个委托 public delegate void StringDelegate string s 另一个类实现了一个方法 public static void StringWriter string s 在我正