问题标签 [method-group]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
c# - 如何将类的属性设置为与类型匹配的方法组列表?
我们之前有一个 OracleCommand,我们正在向其中添加参数,然后我们会在其上运行 ExecuteReaderAsync 以获取 OracleDataReader。然后,我们通过调用“GetList”方法填充不同对象的列表,该方法将获取读取器和返回与列表相同类型的对象的方法组。
正如推荐所暗示的那样,问题在于如果参数乱序,我们会得到一个数据库异常而不是数据。如果对方法组的调用不按顺序放置,则列表只需填写它们应包含的类的空版本。
有人建议使用有序列表,所以我设置了一个字典来保存 DataPackage 对象,其中包含数据库包中的过程和方法组的字符串名称。
我可以轻松地将它们全部按正确的顺序添加一次,并设置命令参数。
随着班级
和
至少它只需要按顺序添加一次,那部分就可以了。我无法弄清楚的部分是使用每个方法组调用 GetList 来填充数据。
问题是当我在 DataPackage 上调试 Add 方法时,列表作为一个对象出现,它尝试转换为 List 但失败了,即使 list 参数显然是一个列表并且填充了数据。有一个更好的方法吗?
asp.net-mvc - ASP.NET MVC - “无法等待‘方法组’”,并且“找不到命名空间名称‘ASPNETCoreWebApplication’”
遇到问题return View(await _context.Reviews.ToListAsync);
时会出现以下错误:Cannot await 'method group'
我被引导相信要使用该return View(await _context.Reviews.ToListAsync);
语句,我需要使用using ASPNETCoreWebApplication.data
(因此我包含它),但它返回一个错误:The type or namespace 'ASPNETCoreWebApplication' could not be found [...]
.
如果我删除using <project_name>data
,则会出现与上述相同的ApplicationDbContext
错误HomeController.cs
)
下面是我的HomeController.cs
:
如果它可能相关,这是我的Reviews.cs
模型:
在HomeController.cs
,
c# - 匿名函数与方法组 - 委托给实例方法不能有 null this
在尝试从匿名函数转换为方法组时,我偶然发现了一个奇怪的问题。下面的示例完美地说明了这个问题 - 有 2 种方法 - Run() 和 Crash(),除了使用匿名函数与方法组之外,它们所做的一切都是一样的。
基本上问题是我想创建一个 Func 来调用对象上的方法,该方法在应用程序启动时未初始化,而是稍后出现,在此 func 运行之前。使用匿名函数效果很好,但转换为方法组会导致异常。
坚持使用匿名函数而不是方法组并不是什么大问题,但是出现了一个 roslynator 警告 RCS1207,我想先了解这个问题的原因,然后再用内联注释禁用它。
c# - 如何将显式运算符转换为方法组?
我的班级ClassName
定义了一个运算符:
这允许以这种方式“投射”:
如果我有类似的方法
我可以使用方法组:
有没有办法只为显式运算符传递方法组?
我在正确语法上的天真实验失败了:
c# - 与方法组相比委托实例分配
几年前,根据 ReSharper 的一些建议,我开始使用方法组语法,最近我尝试了ClrHeapAllocationAnalyzer,它标记了我在 lambda 中使用方法组的每个位置都有问题HAA0603 - This will allocate a delegate instance
。
由于我很好奇这个建议是否真的有用,我为这两种情况编写了一个简单的控制台应用程序。
代码1:
代码2:
Console.ReadKey();
在Code1上放置一个断点显示内存消耗约为500MB,在Code2上放置一个断点显示约为 800MB。即使我们可以争论这个测试用例是否足以解释某些事情,它实际上也显示出差异。
所以我决定看一下生成的 IL 代码,试图了解这两个代码之间的区别。
IL 代码 1:
IL 代码 2:
我不得不承认我在 IL 代码方面还不够专家,无法真正完全理解其中的区别,这就是我提出这个线程的原因。
据我了解,Select
当不通过方法组(Code1)但使用一些指向本机函数的指针时,实际似乎会生成更多指令。与始终生成新委托的其他情况相比,它是否通过指针重用该方法?
我还注意到,与for
Code1 的 IL 代码相比,方法组 IL (Code2) 生成了 3 个链接到循环的注释。
任何有助于理解分配差异的帮助将不胜感激。
c# - 如何让一个窗口悬浮在桌面上?
我正在尝试创建一个按钮以使用“topmost”使窗口浮动在桌面上,但我无法为按钮分配布尔值,因为它是一个方法组
c# - 如何防止方法组丢弃泛型引用类型的可空性?
考虑这个通用的恒等函数:
如果我在 lambda 中使用它来映射值数组中的元素string?
,它会按预期工作(即它保留信息,即值可以为空)。
但是,如果我将其用作方法组,则该信息将被丢弃。
这里发生了什么?这是编译器错误还是可空引用类型的已知限制?
作为一种解决方法,我可以Id
像下面这样声明以获得第二个示例中的预期警告:
但这对我来说似乎过于富有表现力。
我正在使用 C# 10.0。