为什么匿名方法中不允许使用 out 参数?

2024-01-11

这不是一个骗局从匿名方法调用带有 ref 或 out 参数的方法 https://stackoverflow.com/questions/1001475/calling-a-method-with-ref-or-out-parameters-from-an-anonymous-method

我想知道why匿名方法中不允许使用 out 参数。不允许ref参数对我来说更有意义,但是out参数,没那么多。

你对此有何看法


从某些方面来说,这是一个骗局。Out参数是ref参数。 C# 语言使用的值只是有一个额外的属性。禁止它们的原因与ref参数。

这里的问题源于在匿名方法内使用匿名方法外部声明的值的影响。这样做将捕获 lambda 内的值,并在必要时任意将其生命周期延长到当前函数的生命周期之外。这不兼容out具有固定生命周期的参数。

想象一下,例如out参数引用堆栈上的局部变量。 lambda 可以在未来的任意点执行,因此可以在该堆栈帧不再有效时执行。会发生什么out参数是什么意思呢?

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

为什么匿名方法中不允许使用 out 参数? 的相关文章

  • 是否有与 posix_memalign 对应的 C++ 版本?

    当我打电话时posix memalign http man7 org linux man pages man3 posix memalign 3 html为类型的对象分配对齐的内存Foo在我的 C 代码中 我需要做一个reinterpret
  • 静态只读字符串数组

    我在我的 Web 应用程序中使用静态只读字符串数组 基本上数组有错误代码 我将所有类似的错误代码保存在一个数组中并检查该数组 而不是检查不同常量字符串中的每个错误代码 like public static readonly string m
  • 使用 C# 登录《我的世界》

    我正在尝试为自己和一些朋友创建一个简单的自定义 Minecraft 启动器 我不需要启动 Minecraft 的代码 只需要登录的实际代码行 例如 据我所知 您过去可以使用 string netResponse httpGET https
  • 如何在多线程C++ 17程序中交换两个指针?

    我有两个指针 pA 和 pB 它们指向两个大的哈希映射对象 当pB指向的哈希图完全更新后 我想交换pB和pA 在C 17中 如何快速且线程安全地交换它们 原子 我是 c 17 的新手 2个指针的原子无等待交换可以通过以下方式实现 inclu
  • 为什么在 WebApi 上下文中在 using 块中使用 HttpClient 是错误的?

    那么 问题是为什么在 using 块中使用 HttpClient 是错误的 但在 WebApi 上下文中呢 我一直在读这篇文章不要阻止异步代码 https blog stephencleary com 2012 07 dont block
  • File.AppendText 尝试写入错误的位置

    我有一个 C 控制台应用程序 它作为 Windows 任务计划程序中的计划任务运行 此控制台应用程序写入日志文件 该日志文件在调试模式下运行时会创建并写入应用程序文件夹本身内的文件 但是 当它在任务计划程序中运行时 它会抛出一个错误 指出访
  • 使用 LINQ to SQL 时避免连接超时的最佳实践

    我需要知道在 net 应用程序中使用 LINQ to SQL 时避免连接超时的最佳实践 特别是在返回时IQueryable
  • 告诉 Nancy 将枚举序列化为字符串

    Nancy 默认情况下在生成 JSON 响应时将枚举序列化为整数 我需要将枚举序列化为字符串 有一种方法可以通过创建来自定义 Nancy 的 JSON 序列化JavaScript 原始转换器 https github com NancyFx
  • 为什么可以通过ref参数修改readonly字段?

    考虑 class Foo private readonly string value public Foo Bar ref value private void Bar ref string value value hello world
  • 识别 Visual Studio 中的重载运算符 (c++)

    有没有办法使用 Visual Studio 快速直观地识别 C 中的重载运算符 在我看来 C 中的一大问题是不知道您正在使用的运算符是否已重载 Visual Studio 或某些第三方工具中是否有某些功能可以自动突出显示重载运算符或对重载运
  • 打破 ReadFile() 阻塞 - 命名管道 (Windows API)

    为了简化 这是一种命名管道服务器正在等待命名管道客户端写入管道的情况 使用 WriteFile 阻塞的 Windows API 是 ReadFile 服务器已创建启用阻塞的同步管道 无重叠 I O 客户端已连接 现在服务器正在等待一些数据
  • 在 NaN 情况下 to_string() 可以返回什么

    我使用 VS 2012 遇到了非常令人恼火的行为 有时我的浮点数是 NaN auto dbgHelp std to string myFloat dbgHelp最终包含5008角色 你不能发明这个东西 其中大部分为0 最终结果是 0 INF
  • 在mysql连接字符串中添加应用程序名称/程序名称[关闭]

    Closed 这个问题需要细节或清晰度 help closed questions 目前不接受答案 我正在寻找一种解决方案 在连接字符串中添加应用程序名称或程序名称 以便它在 MySQL Workbench 中的 客户端连接 下可见 SQL
  • C++ 中的双精度型数字

    尽管内部表示有 17 位 但 IEE754 64 位 浮点应该正确表示 15 位有效数字 有没有办法强制第 16 位和第 17 位为零 Ref http msdn microsoft com en us library system dou
  • 使 Guid 属性成为线程安全的

    我的一个类有一个 Guid 类型的属性 该属性可以由多个线程同时读写 我的印象是对 Guid 的读取和写入不是原子的 因此我应该锁定它们 我选择这样做 public Guid TestKey get lock testKeyLock ret
  • C++ new * char 不为空

    我有一个问题 我在 ASIO 中开发服务器 数据包采用尖头字符 当我创建新字符时 例如char buffer new char 128 我必须手动将其清理为空 By for int i 0 i lt 128 i buffer i 0x00
  • String.Empty 与 "" [重复]

    这个问题在这里已经有答案了 可能的重复 String Empty 和 有什么区别 https stackoverflow com questions 151472 what is the difference between string
  • 使用 omp_set_num_threads() 将线程数设置为 2,但 omp_get_num_threads() 返回 1

    我有以下使用 OpenMP 的 C C 代码 int nProcessors omp get max threads if argv 4 NULL printf argv 4 s n argv 4 nProcessors atoi argv
  • Objective-C / C 给出枚举默认值

    我在某处读到过关于给枚举默认值的内容 如下所示 typedef enum MarketNavigationTypeNone 0 MarketNavigationTypeHeirachy 1 MarketNavigationTypeMarke
  • 如何将十六进制字符串转换为无符号长整型?

    我有以下十六进制值 CString str str T FFF000 如何将其转换为unsigned long 您可以使用strtol作用于常规 C 字符串的函数 它使用指定的基数将字符串转换为 long long l strtol str

随机推荐

  • 使用 br 从文本中查找 xpath

    我有这个html代码 div span test span foo br bar div 我试图用直接在 div 内的文本找到它 所以 foo bar 通常 我会去 div normalize space text foobar 但由于它不
  • 如何在 Python 中创建新的未知或动态/expando 对象

    在Python中 我们如何在没有预定义类的情况下创建一个新对象 然后动态地向它添加属性 例子 dynamic object Dynamic dynamic object dynamic property a abc dynamic obje
  • 如何针对特定文件关闭 ARC

    我知道我应该添加编译器标志 fno objc arc到 XCode 4 中的编译源来完成此操作 但它不起作用 即使添加了标志 我仍然遇到错误KeychainItemWrapper m文件声称我需要使用 bridge对于 C 指针 我的项目是
  • 如何通过 WMI 获取 IIS 应用程序信息

    如何使用 WMI 获取 IIS 应用程序 虚拟文件夹 的实际目录路径 Use 查看更多类似示例的工具 On Error Resume Next 常量 wbemFlagReturnImmediately h10 常量 wbemFlagForw
  • 如何限制信标的广告范围?

    是否可以限制信标的范围 以便只有在一定近距离 或接近度 内的设备才能识别并连接到信标 例如 0 5 米区域之外的设备不应该能够看到或连接到信标 我正在使用 iOS 设备作为信标 在苹果的CoreLocationAPI 有一个方法叫具有测量功
  • 如何在Elasticsearch数据库中创建唯一约束?

    我使用elasticsearch作为文档数据库 我创建的每条记录都有一个guid id 系统将其用作记录id 商务人士希望提供一项功能 让用户根据日期以及当天 本月迄今为止创建的记录数拥有自己的自动文件名约定 我需要的是防止重复的用户文件名
  • reg for . 中的双反斜杠和单斜杠有什么区别?

    下面两个命令 grep enrolments grep enrolments 得到了如下所示的相同结果 COMP4001 4368523 Doddau Yobhazravi 8684 M COMP9315 4368523 Doddau Yo
  • 使用“匿名”类实现 Delphi 接口

    我有一个界面 type IProgressObserver interface IInterface procedure ReportProgress Progress Integer procedure ReportError Messa
  • Java 模式匹配器:创建新的还是重置?

    假设一个正则表达式 通过 JavaMatcher对象 与大量字符串进行匹配 String expression The Regular Expression Pattern pattern Pattern compile expressio
  • 跨多个选项卡的工作表过滤脚本在主工作表上显示空白行,并导致其他脚本停止运行

    我有一个多方面的问题 我正在尝试编写一个脚本来提取选项卡名称 并使用该信息从每个单元格中提取特定单元格 文档的选项卡经常更改 以便创建主表 主表旨在显示所有打开的操作项目 并过滤掉任何关闭的项目 空白行 到目前为止 我的脚本可以工作 但它会
  • macOS:如何使用终端在启动后重定向进程的 STDERR / STDOUT?

    在 macOS 中 通常可以通过直接在终端中执行二进制文件来执行进程 从而获得一些可观的控制台 shell 输出 Applications SOME APPLICATION app Contents MacOS SOME APPLICATI
  • 使用 Capistrano 定义捆绑路径

    我在 capistrano 的 deploy rb 文件中使用以下配置 require bundler capistrano require rvm capistrano set bundle cmd home deployment rvm
  • git push 到远程分支

    我有一个有分支的远程项目 所以我首先克隆存储库 然后向克隆发出以下命令以在分支上工作 git checkout b
  • 使用 matplotlib 区分单击和双击

    我正在尝试捕获对我的人物的单击和双击 正如另一篇文章中所说answer https stackoverflow com a 17753195 4537483 the event包含event dblclick这是 False 或 True
  • 在Python中使用函数名作为变量

    我有一个有趣的 可能是愚蠢的 想法 如果我使用内置函数名称作为变量来分配某个对象 比如整数 会发生什么 这是我尝试过的 gt gt gt a 1 2 3 4 gt gt gt len a 4 gt gt gt len 1 gt gt gt
  • 以非交互方式将函数参数传递给 Julia

    我的文件中有一个 Julia 函数 假设是下面的 现在我想将参数传递给这个函数 我尝试做 julia filename jl randmatstat 5 但这给出了一个错误 即 标记是意外的 不确定解决方案是什么 我也对是否有一个 main
  • Socket.io 与 PubNub...为什么?

    我看到 PubNub 说他们支持 Socket io http blog pubnub com node js supercharged by pubnub socket io github http blog pubnub com nod
  • SQL Server 2005 ROW_NUMBER() 不带 ORDER BY

    我正在尝试使用从一个表插入另一个表 DECLARE IDOffset int SELECT IDOffset MAX ISNULL ID 0 FROM TargetTable INSERT INTO TargetTable ID FIELD
  • 内存中“null”在哪里

    在java中 你不能在声明中声明数组的大小 int 5 scores bad 有人告诉我这是因为 JVM 在对象初始化之前不会分配内存空间 如果您有一个实例数组变量 自动初始化为默认值 null 该变量是否指向堆中指示 null 的位置 空
  • 为什么匿名方法中不允许使用 out 参数?

    这不是一个骗局从匿名方法调用带有 ref 或 out 参数的方法 https stackoverflow com questions 1001475 calling a method with ref or out parameters f