首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如果在循环中调用某个方法,C#编译器是否会抛出错误或警告

如果在循环中调用某个方法,C#编译器是否会抛出错误或警告
EN

Stack Overflow用户
提问于 2021-01-16 06:51:12
回答 2查看 117关注 0票数 1

我团队中的开发人员经常在循环中编写代码,进行相对较慢的调用(例如,数据库访问或web服务调用或其他较慢的方法)。这是一个非常常见的错误。

是的,我们练习代码审查,并尝试在合并之前捕获并修复它们。然而,早点失败更好,不是吗?

那么有没有办法通过编译器来捕捉这个错误呢?

示例:

想象一下这个方法

代码语言:javascript
复制
public ReturnObject SlowMethod(Something thing) 
{
    // method work
}

下面的方法是在一个循环中调用的,这是一个错误。

代码语言:javascript
复制
public ReturnObject Call(IEnumerable<Something> things)
{
    foreach(var thing in Things)
        SlowMethod(thing); // Should throw compiler error or warning in a loop
}

有没有办法用一个属性或编译器语句来修饰上面的SlowMethod(),这样它在循环中使用时就会报错?

EN

回答 2

Stack Overflow用户

发布于 2021-01-16 07:00:36

不,在常规的C#中没有任何东西可以防止在循环中使用方法。

您的选择:

票数 2
EN

Stack Overflow用户

发布于 2021-01-16 07:41:15

显然,在循环中调用那些缓慢的方法是有意义的--您试图将工作放在防止这种情况发生的过程中,但这是将工作放在从根本上负面的东西上。为什么不做些积极的事情呢?显然,您已经提供了一个便于在循环中使用的API。因此,在以前循环中会发生错误使用的情况下,提供一些更容易正确使用的替代方案,例如:

  1. 是一个基于迭代的应用程序接口,它可以隐含循环,为了消除一些延迟,因为你可以对将要迭代的内容有一个完整的视图,并且可以适当地隐藏延迟,
  2. 是一个不会阻塞线程的异步应用程序接口,示例代码展示了如何在目前为止遇到的典型情况下使用它;
  3. 一个最小公分母的API:将方法拆分成一个请求者和一个结果提供者,这样自然就会有两个循环:一个用于提交所有请求,另一个用于收集和处理结果(我不喜欢这种方法,因为它不会使代码更好)
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/65744576

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档