C# 7 本地函数:是否允许属性/方面?

2023-12-30

C# 7 引入了本地函数(这太棒了!)。假设我有以下代码:

    using System;
    using PostSharp.Aspects;

    namespace AspectCS7
    {
        class Program
        {
            private static void Main()
            {
                [MyAspect]            
                void LocalFunction()
                {
                    Console.WriteLine("Hello Aspect!");
                }

                LocalFunction();
            }
        }

        [Serializable]
        public class MyAspect : OnMethodBoundaryAspect
        {
            public override void OnEntry(MethodExecutionArgs args)
            {
                Console.WriteLine("Entering Aspect");
            }
        }
    }

此代码显示编译时错误。是否可以将属性应用于局部函数?


局部函数一度允许使用属性。有一些网上的例子 https://asizikov.github.io/2016/04/15/thoughts-on-local-functions/使用属性的本地函数,但它们不再被允许。

更新: 以下是关于该主题的持续讨论:https://github.com/dotnet/csharplang/issues/794 https://github.com/dotnet/csharplang/issues/794.

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

C# 7 本地函数:是否允许属性/方面? 的相关文章

  • 将 void *user_data 转换为对象

    我该如何投射void something到标准 C 中的对象 具体来说我想投void userdata to std map
  • 如果图像包含特定颜色则

    是否有一种简单的方法来检查图像是否包含特定的 RGB 颜色 例如 Dim img As Image Image FromFile C image png If img contains color red toRGB then 我认为检查这
  • & 运算符的含义是什么?

    在下面的代码中 Expression
  • 为什么将 char 传递给函数会改变它在 c 中的值?

    我目前正在关注本作业簿 http www cs bham ac uk exr lectures opsys 10 11 lectures os dev pdf关于构建操作系统 我的目的是写一个64位内核 我已经在文本模式下加载 内核 代码并
  • std::tr1::function 和 std::tr1::bind

    我在使用时遇到问题veryC 类中的复杂 C 函数 重写 C 函数是not一个选项 C函数 typedef void integrand unsigned ndim const double x void fdata unsigned fd
  • 我的 WPF 应用程序未触发 MainWindow_Loaded

    我目前正在关注Pluralsight C Fundamentals Part 1并在Classes and Objects视频部分指导我在 Visual Studio 中创建一个新的 WPF 应用程序并填写代码 这导致以下结果 namesp
  • boost::asio::io_service 是否保留处理程序的顺序?

    Does boost asio io service http www boost org doc libs release doc html boost asio reference io service html保证处理程序的调用顺序与
  • 多维数组和指向指针的指针

    创建多维数组时char a 10 10 根据我的书 它说你必须使用类似于char a 10 将数组传递给函数 为什么必须这样指定长度 您不是只是将双指针传递给 with 并且该双指针不是已经指向分配的内存吗 那么为什么参数不能是char a
  • 函数指针上的未知类型 F TYPE

    include
  • 从套接字读取 C HTTP

    我想知道如何判断是否已从套接字接收到所有数据 这是一个简单的网络代理 现在我正在处理请求部分 所以发送的内容应该以 r n r n 结尾 我不知道请求会持续多久 我在这里读过一些帖子 说我应该检查读取函数是否返回 0 但其他人说0只在客户端
  • 如何在Azure功能中添加razor视图文件?

    我正在创建一个应用程序 它是 azure 函数项目 我想在该项目中使用 Razor 视图 我应该在 azure 函数中使用任何模板引擎吗 得益于一些方面的进步剃刀之光项目 https github com toddams RazorLigh
  • ASP.NET中如何访问除wwwroot以外的位置

    我可以使用访问服务器的物理位置Server MapPath 这给了我内部的物理路径wwwroot文件夹 我想将一些数据保存到同一服务器的另一个驱动器中D 驾驶 我想我无法获取以下位置的物理位置D 驾驶使用Server MapPath因为它位
  • 如何从Web JavaScript应用程序获取桌面C#程序中的变量

    我遇到一个问题 有两个应用程序 一种是 C 中的桌面应用程序 另一种是 javascript 中的 Web 应用程序 运行桌面应用程序中的一些变量或信息需要传输到Web应用程序 有谁知道如何解决这个问题 有人愿意提供更多细节来解决这个问题吗
  • Identity Server 4:添加访问令牌的声明

    我正在使用 Identity Server 4 和隐式流 并且想要向访问令牌添加一些声明 新的声明或属性是 tenantId 和 langId 我已将 langId 添加为我的范围之一 如下所示 然后通过身份服务器请求 但我也获得了tena
  • 如何使用 ProtoGen 从 proto 文件生成结构

    我们一直在使用 protobuf net ProtoGen 从 proto 文件生成 C cs 文件 我们希望代替类来生成结构 例如 DataContract public struct Entity1 ProtoMember 1 publ
  • Request.Form 和 Request.QueryString 之间的区别?

    有人可以告诉我两者之间的确切区别吗Request Form and Request QueryString 我知道一个区别 比如 如果HTTP请求方式为POST 则用户提交的数据在申请表 收藏 如果HTTP请求方法是GET 则用户提交的数据
  • 如何组合||条件语句中的运算符[重复]

    这个问题在这里已经有答案了 代替 if foo 1 foo 5 foo 9 我喜欢将它们组合起来 类似于以下内容 这不起作用 if foo 1 5 9 那可能吗 不幸的是不是 你最好的选择是创建一个扩展方法 public static bo
  • 在Framework 4.6项目中使用.net core DLL

    我已经在 net core 2 0 中构建了一个 DLL 现在我想在使用 net 4 6 1 框架的 WinForms 项目中使用它 我可以引用该 dll 但收到 System IO FileLoadException 表示找不到 Syst
  • char[length]初始化并处理

    我定义了一个字符数组 char d 6 如果我在以下方面有误 请纠正我 此时没有为变量分配内存d 现在我要初始化它 d aaaaa 这种初始化之后 就不需要释放内存了 它将自动完成 我怎么知道是否char 被初始化了吗 我正在寻找类似的模式
  • C#:如何处理乱序 TCP 数据包?

    请有人解释一下如何处理乱序数据包 我使用原始套接字来捕获数据包 并在数据包到来时解析它们 但其中一些数据包的顺序错误 例如 ID 标志 16390 PSH ACK 16535 PSH ACK 16638 确认 16640 PSH ACK 1

随机推荐

  • 为什么 Visual Studio 2010 在 Boost 1.42.0 中抛出此错误?

    我正在尝试重新编译应用程序 该应用程序在 Visual Studio 2005 和 Visual Studio 2008 中编译良好 警告级别 4 由于错误 如下所示 来自 std tr1 我认为存在一些冲突 但不确定如何修复 我的第一个想
  • gradle错误找不到方法dependencyManagement()

    下面是我的 build gradle buildscript ext springBootVersion 2 0 0 M3 dependencies classpath org springframework boot spring boo
  • 运行 Ansible playbook 时出现 UNREACHABLE 错误

    我确实可以通过 ssh 访问目标计算机 并且它可以工作 但是每当我运行此剧本时 我都会收到以下错误输出 sudo ansible playbook ansible playbook test yml PLAY openstack TASK
  • 如何在 vue bootstrap 中启用悬停下拉菜单?

    div div
  • 事件处理程序为空

    我正在尝试从用户控件引发单击事件并在包含页面上处理它 我遇到的问题是 当我单击用户控件上的按钮 imgstep1 时 imgstep1 click 事件后面的代码会触发 但 btnHandler 事件始终为空 因此它不会调用父事件 对此的任
  • C# 与 C++ 等效的空合并运算符

    C 空合并运算符是否有 C 等效项 我在代码中做了太多空检查 因此正在寻找一种减少空代码量的方法 我刚刚发现这个 这 运算符又名空合并运算符 http dev tricks net the operator aka null coalesc
  • 如果 C 有指针,为什么还需要数组?

    如果我们可以使用指针malloc创建和使用数组 为什么C中存在数组类型 如果我们可以使用指针来代替 那不是没有必要了吗 数组比动态内存分配更快 数组在 编译时 分配 而 malloc 在运行时分配 分配需要时间 另外 C 并没有强制要求ma
  • Java 8方法引用:提供能够提供参数化结果的Supplier

    我想用 java util Optional orElseThrow 具有要求构造函数参数的异常类型 像这样的事情 orElseThrow MyException new someArgument obviously NOT working
  • 从 C 文本文件中读取 int 值

    我有一个包含以下三行的文本文件 12 5 6 4 2 7 9 我可以使用fscanf函数读取前 3 个值并将它们存储在 3 个变量中 但我无法阅读其余部分 我尝试使用fseek函数 但它仅适用于二进制文件 请帮助我将所有值存储在整数变量中
  • 在 C# 中使用“dynamic”关键字无法编译

    我正在尝试编译一段 C 代码 其中包含dynamic关键词 我需要这个关键字来使用ironpython 但是 它无法编译 抱怨 error CS1980 Dynamic keyword requires System Runtime Com
  • 什么是 Nak 限制?

    我试图了解 Android Open Accessory API 如何与 Arduino ADK 板配合使用 我已经能够发送和接收信息 但我只想知道一切是如何工作的 我得到了这个函数的描述 int AndroidAccessory read
  • 错误测试应用内结算示例 - Dungeons

    我正在尝试获取应用程序内计费示例地下城 我有一个带有我的公共 ID 的草稿应用程序 并且我已经发布了非托管项目 potion 001 我在设备上使用与注册商家帐户相同的谷歌帐户 静态测试效果很好 但是当我尝试购买药水时 我得到 DEBUG
  • VBA中的数字上下控制

    vba 中是否有内置的数字 updown 控件 或者我们是否需要创建一个类似的控件 如果有这样的控件那么我们可以使用哪些事件 请建议 您可以使用SpinButton1对此进行控制 SNAPSHOT CODE 您可以设置最小值和最大值Spin
  • 从列表更新选项菜单

    我的 GUI 中有一个 OptionMenu 它由一个列表填充 每次用户运行某个进程时 列表都会更新以反映这一点 有没有办法根据列表更新选项菜单 我试过了self plotWindow update as per 这个问题 https st
  • 如何将现有数据保留在 couchbase 中并且仅更新新数据而不覆盖

    因此 假设我在存储桶下创建了一些记录 文档 并且用户仅更新 RDBMS 中 10 列中的一列 因此我尝试仅发送该一列数据并在 couchbase 中更新它 但问题是 couchbase 会覆盖整个记录并为其余列设置 NULL 一种方法是从
  • 单击 JfreeChart 折线图按钮上的放大和缩小功能?

    基本上我希望线图被放大和缩小 总共4个按钮 2个用于X轴 放大和缩小 另外两个用于Y轴 沿着任何轴单击按钮 就像绘制图形一样在负 x 轴和负 Y 轴区域 根据数据点 然后单击按钮 图形应根据按钮单击沿负 x 轴或负 Y 轴放大和缩小 我怎样
  • 强制应用程序在特定的 .NET 运行时版本下运行?

    我安装了 NET 2 0 运行时 然后安装了 NET 4 0 运行时 所以我两者都有 当我运行 NET 应用程序时 有没有办法强制使用哪个运行时 编辑 澄清 我的意思是不考虑应用程序的构建方式 我假设 NET 4 0 运行时可以运行 5 年
  • OpenSSL::SSL::SSLError: SSL_connect SYSCALL 返回=5 errno=0 状态=SSLv3 读取服务器问候 A

    下面的代码产生以下错误 OpenSSL SSL SSLError SSL connect SYSCALL returned 5 errno 0 state SSLv3 read server hello A require net http
  • 获取 Bash 数组中值的索引

    我有东西在bash like myArray red orange green 我想做一些类似的事情 echo myArray green 在这种情况下会输出2 这是可以实现的吗 这将做到这一点 bin bash my array red
  • C# 7 本地函数:是否允许属性/方面?

    C 7 引入了本地函数 这太棒了 假设我有以下代码 using System using PostSharp Aspects namespace AspectCS7 class Program private static void Mai