C# - 无法在方法内声明委托

2024-03-01

我这里真的是一片空白。

我在想why我无法在方法中声明委托类型,但我必须在类级别声明委托类型。

namespace delegate_learning
{
    class Program
    {
        // Works fine
        public delegate void anon_delgate(int i);

        static void Main(string[] args)
        {
            HaveFun();
            Console.Read();
        }

        public static void HaveFun()
        {
            // Throws an error :/
            //delegate void anon_delgate(int i);

            anon_delgate ad = delegate(int i) { Console.WriteLine(i.ToString());};
        }


    }
}

Edit:我正在研究 Lambda 表达式,并根据我个人的知识回顾 Lambda 之前的情况。


// Throws an error :/
delegate void anon_delgate(int i);

它会抛出一个错误,因为它是type定义,而不是variable宣言。任何type方法内部不允许定义。仅允许在类范围或命名空间范围内使用。

namespace A
{
   delegate void X(int i); //allowed
   public class B
   {
         delegate void Y(int i); //also allowed
   }
}

顺便说一句,你为什么不写这个:

anon_delgate ad = i => Console.WriteLine(i.ToString());

这称为 lambda 表达式。

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

C# - 无法在方法内声明委托 的相关文章

  • 如何在没有 Control.Invoke() 的情况下从后台线程修改控件属性

    最近 我们遇到了一些旧版 WinForms 应用程序 我们需要更新一些新功能 在专家测试该应用程序时 发现一些旧功能被破坏 无效的跨线程操作 现在 在您认为我是新手之前 我确实有一些 Windows 窗体应用程序的经验 我不是专家 但我认为
  • SSH 主机密钥指纹与模式 C# WinSCP 不匹配

    我尝试通过 WinSCP 使用 C 连接到 FTPS 服务器 但收到此错误 SSH 主机密钥指纹 与模式不匹配 经过大量研究 我相信这与密钥的长度有关 当使用 服务器和协议信息 下的界面进行连接时 我从 WinSCP 获得的密钥是xx xx
  • 使用 Microsoft Graph API 订阅 Outlook 推送通知时出现 400 错误请求错误

    我正在尝试使用 Microsoft Graph API 创建订阅以通过推送通知获取 Outlook 电子邮件 mentions 我在用本文档 https learn microsoft com en us graph api subscri
  • 跨多个控件共享事件处理程序

    在我用 C 编写的 Windows 窗体应用程序中 我有一堆按钮 当用户的鼠标悬停在按钮上时 我希望按钮的边框发生变化 目前我有以下多个实例 每个按钮一个副本 private void btnStopServer MouseEnter ob
  • 当 Cortex-M3 出现硬故障时如何保留堆栈跟踪?

    使用以下设置 基于 Cortex M3 的 C gcc arm 交叉工具链 https launchpad net gcc arm embedded 使用 C 和 C FreeRtos 7 5 3 日食月神 Segger Jlink 与 J
  • 基于范围的 for 循环中的未命名循环变量?

    有没有什么方法可以不在基于范围的 for 循环中 使用 循环变量 同时也避免编译器发出有关未使用它的警告 对于上下文 我正在尝试执行以下操作 我启用了 将警告视为错误 并且我不想进行像通过在某处毫无意义地提及变量来强制 使用 变量这样的黑客
  • .Net Core / 控制台应用程序 / 配置 / XML

    我第一次尝试使用新的 ConfigurationBuilder 和选项模式进入 Net Core 库 这里有很多很好的例子 https docs asp net en latest fundamentals configuration ht
  • 如何在 Team Foundation 上强制发表有意义的签入评论?

    我有一个开发团队有一个坏习惯 他们写道poor签入评论 当我们必须在团队基础上查看文件的历史记录时 这使得它成为一场噩梦 我已经启用了变更集评论政策 这样他们甚至可以在签到时留下评论 否则他们不会 我们就团队的工作质量进行了一些讨论 他们很
  • 线程、进程和 Application.Exit()

    我的应用程序由主消息循环 GUI 和线程 Task Factory 组成 在线程中我调用一些第三方应用程序var p new Process 但是当我调用Application Exit 在消息循环中 我可以看到在线程中启动的进程仍在内存中
  • 是否有比 lex/flex 更好(更现代)的工具来生成 C++ 分词器?

    我最近将源文件解析添加到现有工具中 该工具从复杂的命令行参数生成输出文件 命令行参数变得如此复杂 以至于我们开始允许它们作为一个文件提供 该文件被解析为一个非常大的命令行 但语法仍然很尴尬 因此我添加了使用更合理的语法解析源文件的功能 我使
  • 用 C 实现 Unix shell:检查文件是否可执行

    我正在努力用 C 语言实现 Unix shell 目前正在处理相对路径的问题 特别是在输入命令时 现在 我每次都必须输入可执行文件的完整路径 而我宁愿简单地输入 ls 或 cat 我已经设法获取 PATH 环境变量 我的想法是在 字符处拆分
  • 将 System.Windows.Forms.Keys 序列转换为 Char

    有没有办法转换由 Keys 枚举表示的击键序列 即System Windows Forms Keys 在一个字符中 例如 Keys Oem4进而Keys A产生 char 它一定存在于 WinAPI 中的某个地方 因为当我在文本框中按下按键
  • 可空属性与可空局部变量

    我对以下行为感到困惑Nullable types class TestClass public int value 0 TestClass test new TestClass Now Nullable GetUnderlyingType
  • 将应用程序从 Microsoft Access 迁移到 VB 或 C#.NET

    我目前正试图说服管理层需要将我们的应用程序之一移植到 NET 该应用程序已经发展成为 Access 中的一个庞然大物 SQL 后端 拥有 700 个链接表 650 个表单 子表单 130 个模块和 850 个查询 我几乎知道这样做的所有主要
  • c++/cli 终结器中免费 GCHandle 的最佳实践

    我在 c 中有一些函数 我会在 net 应用程序中使用它 为此 我用 C cli 编写了一个包装器类 C 接口中有一个回调函数 并将其包装在 net 委托中 但是我应该如何释放回调 gcHandle 的非托管资源呢 是否允许在终结器中从 G
  • 如何在内存中存储分子?

    我想将分子存储在内存中 这些可以是简单的分子 Methane CH4 C H bond length 108 7 pm H H angle 109 degrees But also more complex molecules like p
  • 在Linux中使用C/C++获取机器序列号和CPU ID

    在Linux系统中如何获取机器序列号和CPU ID 示例代码受到高度赞赏 Here http lxr linux no linux v2 6 39 arch x86 include asm processor h L173Linux 内核似
  • 如何在 C# 中播放在线资源中的 .mp3 文件?

    我的问题与此非常相似question https stackoverflow com questions 7556672 mp3 play from stream on c sharp 我有音乐网址 网址如http site com aud
  • 如何连接字符串和常量字符?

    我需要将 hello world 放入c中 我怎样才能做到这一点 string a hello const char b world const char C string a hello const char b world a b co
  • 为什么 strtok 会导致分段错误?

    为什么下面的代码给出了Seg 最后一行有问题吗 char m ReadName printf nRead String s n m Writes OK char token token strtok m 如前所述 读取字符串打印没有问题 但

随机推荐

  • 以特殊格式收集存储库中所有分支的列表 [Git]

    有没有办法收集存储库中的分支列表以及最后提交日期 换句话说 我想将这样的内容打印到标准输出 branch name 1 date1 branch name 2 date2 branch name 3 date3 是否可以 EDIT 我尝试使
  • PermissionError: [Errno 13] 权限被拒绝 Flask.run()

    我正在使用 python 3 运行 MacOS X 文件夹和文件有 755 但我也在 777 中测试过它 但没有成功 我的问题是 如果我有正确的权限 为什么它不允许我在没有 sudo 的情况下运行 还是我的设置不正确 cris mbp Pr
  • Java:三个字符串,字典顺序

    初学者 Java 程序员在这里 我试图将三个字符串相互比较 并让系统按字典顺序吐出第二个 中间的单词 import java util public class Ordered2 public static void main String
  • Elm - 生成随时间变化的随机数列表

    我试图使一列随机数每秒发生变化 但我收到不同的错误消息 import Random main flow down asText Random range 0 100 every second asText Random range 0 10
  • 标准库函数在 C 中如何工作? [复制]

    这个问题在这里已经有答案了 在浏览 C 标准库函数时 glibc 我找到printf 实际上打电话puts 功能 IO puts 但我无法找出 put 函数实际上是如何写入的stdout 是否使用write 系统调用定义在unistd h或
  • 带有虚线图案的渐变线

    我需要创建一条具有线性渐变的虚线 我设法使用创建了一条虚线 hr 以及以下样式 line border 0px border bottom 2px dashed 我也知道要实现渐变 我需要这样做 background webkit grad
  • 在 ec2 中启动 minikube 显示“X 抱歉,Kubernetes v1.18.0 需要将 conntrack 安装在 root 路径中”

    我正在尝试启动 Minikube 所以我跑了 minikube start vm driver none 但它在控制台中显示以下行 Amazon 2 Xen amd64 上的 minikube v1 9 2 根据用户配置使用无驱动程序 X
  • 使用 Google Apps 脚本 (GAS) V8 定义私有类字段

    自从 Google 推出 V8 引擎以来 我正在将一些代码迁移到新引擎 ES6 允许定义私有类 但是在 Google App Script 上运行时 我收到错误 Example class IncreasingCounter count 0
  • SharePlum 错误:“无法获取用户信息列表”

    我正在尝试使用分享梅花 https pypi python org pypi SharePlum 0 1 1这是 SharePoint 的 Python 模块 但是当我尝试连接到我的 SharePoint 时 SharePlum 会向我抛出
  • 对象拥有 QObject 派生类集合的正确方法是什么?

    我正在尝试创建一个类 公开 QObject 派生类 具有其自己的 qt 属性 的集合 或多个 我可以在 qml 中使用 qt 属性 根据http qt project org doc qt 5 0 qtcore qobject html n
  • 如何从wpf中的代码隐藏更改控件的Grid.Row和Grid.Column

    我已将控件放置在DataGrid像这样
  • python结构解包长度错误

    我有一个长度为 41 的字节对象 我尝试用以下方法解压它 struct unpack 2B2B32sBi data 但我收到一个错误 struct error 解包需要长度为 44 的字节对象 我认为长度2B2B32sBi应该2 1 2 1
  • 使c++程序在windows中的特定核心上运行

    我想知道如何强制 Visual Studio 中的 C 程序在特定的核心上运行 在拥有多个核心的计算机上 i found this https stackoverflow com questions 8326427 how to force
  • 以编程方式设置Android动画列表

    我正在尝试将 gif 动画添加到我的应用程序中 1 我可以从服务器下载 gif 动画 2 我能够解码动画 gif 使用我的自定义解码器 并拥有与其帧相对应的单独位图 现在我想使用逐帧动画来制作它的动画 正如我所读到的 要执行逐帧动画 首先需
  • 如何设置camel处理器或其他路由成分的id

    Camel 自动生成处理器和其他内容的 ID processor1 processor25 有没有办法设置这个名字 我们需要通过 jmx 识别某些处理器来获取遥测数据 我想要设置的名称是通过属性给出的 它们在开始时是已知的 因此 我需要在定
  • jQuery 交换图像未加载

    我正在尝试使用 jQuery attr 将图像从 Images origImage 的原始图像源位置交换到 Images newImage 的新图像源位置 当我单击 div 时 如果右键单击图像并查看地址 URL 属性 图像 Url 属性会
  • 如何将不同类型的列插入到numpy数组中?

    我想附加两个类型的 numpy 数组np datetime64 and int到另一个 这会导致错误 我需要做什么来纠正这个问题 如果我将向量附加到自身上 即 np append c c axis 1 or np append a a ax
  • 如何设置gdb的默认选项?

    我每次打开 GDB 时都会设置几个选项 例如 set print thread events off 有没有办法默认设置这些选项 也许类似于 gdb rc 文件 初始化文件为gdb叫做 gdbinit 您可以将所需的选项放入此文件中 它们将
  • 当 div 滚动到视口时淡入

    好的 所以我一直在寻找simple当用户将其滚动到视图中时淡入 div 的方法 但我找不到直接的解决方案 HTML div class container div class topdiv This is a 100 height div
  • C# - 无法在方法内声明委托

    我这里真的是一片空白 我在想why我无法在方法中声明委托类型 但我必须在类级别声明委托类型 namespace delegate learning class Program Works fine public delegate void