我最近在使用 linq 的Cast方法时遇到了一个问题。
我在 SO 上发现了一个关于我的问题的类似问题,我还找到了一个很好地解释它的链接。我的问题解决了。
但有件事让我想知道:
为什么这不起作用:
foolist.Cast<bar>(); // throws InvalidCastException
虽然这有效:
foolist.Select(f => (bar)f).ToList(); // works fine
我相信这与每种方法的实现有关。如果是这样,Cast 方法是否不能具有与Select类似的实现,允许它与用户定义的强制转换一起使用(因为这在某种程度上是意料之中的)。
注意:我不是在问为什么它失败了。我在问为什么 Cast 方法是以失败的方式编写的。