gpt4 book ai didi

c# - 使用未处理的异常而不是 Contains()?

转载 作者:太空狗 更新时间:2023-10-29 20:29:44 24 4
gpt4 key购买 nike

假设您正在使用的一个对象有一个与之关联的其他对象的集合,例如,WinForm 上的控件集合。您想要检查集合中的某个对象,但该集合没有 Contains() 方法。有几种方法可以解决这个问题。

  • 通过遍历集合中的所有项目来实现您自己的 Contains() 方法,看看其中是否有您要查找的内容。这似乎是“最佳实践”方法。
  • 我最近遇到一些代码,其中没有循环,而是尝试在 try 语句中访问对象,如下所示:
try  
{
Object aObject = myCollection[myObject];
}
catch(Exception e)
{
//if this is thrown, then the object doesn't exist in the collection
}

我的问题是您认为第二种选择的编程实践有多糟糕,为什么?与遍历集合的循环相比,它的性能如何?

最佳答案

一般的经验法则是避免对控制流使用异常,除非触发异常的情况是“异常的”——例如,极其罕见!

如果这是正常且定期发生的事情,则绝对不应作为异常(exception)处理。

由于涉及所有开销,异常非常非常慢,因此如果它发生得足够频繁,也可能有性能原因。

关于c# - 使用未处理的异常而不是 Contains()?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8348/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com