【发布时间】:2013-06-18 06:51:37
【问题描述】:
我可以在 C# 中执行以下操作真的很酷
if (Divide(4, 0) != false)
{
MessageBox.Show("Cool");
}
...
public dynamic Divide(int x, int y)
{
if (y == 0) return false;
return x / y;
}
例如,上面的代码允许我轻松测试除零异常,而不是使用 try/catch。但是,如果代码实际上返回了有效结果,则会遇到错误,因为 bool 无法与整数进行比较——也就是说,在比较中,结果被强制变为静态类型?
有什么方法可以检查条件是否满足,并在不导致错误的情况下得到结果?
谢谢。
【问题讨论】:
-
这很有趣,但动态并不是真的要以这种方式使用。它更像是一种避免投射碰巧共享相似界面的不同事物的方法。这通常称为鸭式打字。
-
我不明白为什么这是一个好主意或好做法。
-
@nathangonzalez:鸭子打字?我刚刚看到this answer,但我看不懂,我想它可能有我要找的东西对吧?
-
老实说,我一点也不觉得“酷”;它会导致无类型的混乱..
-
@user2246674:我从 PHP 开始使用 C#,所以它点燃了某种形式的激情 :)