问题标签 [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.

0 投票
1 回答
91 浏览

c# - 如何将类的属性设置为与类型匹配的方法组列表?

我们之前有一个 OracleCommand,我们正在向其中添加参数,然后我们会在其上运行 ExecuteReaderAsync 以获取 OracleDataReader。然后,我们通过调用“GetList”方法填充不同对象的列表,该方法将获取读取器和返回与列表相同类型的对象的方法组。

正如推荐所暗示的那样,问题在于如果参数乱序,我们会得到一个数据库异常而不是数据。如果对方法组的调用不按顺序放置,则列表只需填写它们应包含的类的空版本。

有人建议使用有序列表,所以我设置了一个字典来保存 DataPackage 对象,其中包含数据库包中的过程和方法组的字符串名称。

我可以轻松地将它们全部按正确的顺序添加一次,并设置命令参数。

随着班级

至少它只需要按顺序添加一次,那部分就可以了。我无法弄清楚的部分是使用每个方法组调用 GetList 来填充数据。

问题是当我在 DataPackage 上调试 Add 方法时,列表作为一个对象出现,它尝试转换为 List 但失败了,即使 list 参数显然是一个列表并且填充了数据。有一个更好的方法吗?

0 投票
1 回答
4265 浏览

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,

0 投票
2 回答
822 浏览

c# - 匿名函数与方法组 - 委托给实例方法不能有 null this

在尝试从匿名函数转换为方法组时,我偶然发现了一个奇怪的问题。下面的示例完美地说明了这个问题 - 有 2 种方法 - Run() 和 Crash(),除了使用匿名函数与方法组之外,它们所做的一切都是一样的。

基本上问题是我想创建一个 Func 来调用对象上的方法,该方法在应用程序启动时未初始化,而是稍后出现,在此 func 运行之前。使用匿名函数效果很好,但转换为方法组会导致异常。

坚持使用匿名函数而不是方法组并不是什么大问题,但是出现了一个 roslynator 警告 RCS1207,我想先了解这个问题的原因,然后再用内联注释禁用它。

0 投票
0 回答
58 浏览

c# - 如何将显式运算符转换为方法组?

我的班级ClassName定义了一个运算符:

这允许以这种方式“投射”:

如果我有类似的方法

我可以使用方法组:

有没有办法只为显式运算符传递方法组?

我在正确语法上的天真实验失败了:

0 投票
1 回答
2144 浏览

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)但使用一些指向本机函数的指针时,实际似乎会生成更多指令。与始终生成新委托的其他情况相比,它是否通过指针重用该方法?

我还注意到,与forCode1 的 IL 代码相比,方法组 IL (Code2) 生成了 3 个链接到循环的注释。

任何有助于理解分配差异的帮助将不胜感激。

0 投票
1 回答
521 浏览

c# - 如何让一个窗口悬浮在桌面上?

我正在尝试创建一个按钮以使用“topmost”使窗口浮动在桌面上,但我无法为按钮分配布尔值,因为它是一个方法组

0 投票
0 回答
31 浏览

c# - 如何防止方法组丢弃泛型引用类型的可空性?

考虑这个通用的恒等函数:

如果我在 lambda 中使用它来映射值数组中的元素string?,它会按预期工作(即它保留信息,即值可以为空)。

但是,如果我将其用作方法组,则该信息将被丢弃。

这里发生了什么?这是编译器错误还是可空引用类型的已知限制?

作为一种解决方法,我可以Id像下面这样声明以获得第二个示例中的预期警告:

但这对我来说似乎过于富有表现力。

我正在使用 C# 10.0。

工作示例:https ://dotnetfiddle.net/SEHIb6