"是"关键字如何运作?

joh*_*cat 8 c# wcf-ria-services

更具体地说,为什么这样做:

foreach (ChangeSetEntry changeRow in changeSet.ChangeSetEntries)
    if (changeRow is RouteStage)
    { ... }
Run Code Online (Sandbox Code Playgroud)

但这不是吗?

ChangeSetEntry changeRow = changeSet.ChangeSetEntries[0];
if (changeRow is RouteStage)
{ ... }
Run Code Online (Sandbox Code Playgroud)

在后一种情况下,我得到一个编译器警告说:

给定的表达式永远不是提供的类型.

我可以理解,因为changeRowChangeSetEntry不是一个RouteStage,所以为什么它在foreach块内工作?

这是我Submit对RIA Services DomainService中方法的重写.RouteStage是我定义的由实体返回的实体DomainService.

joh*_*cat 0

该行应为:

if (changeRow.Entity is RouteStage)
Run Code Online (Sandbox Code Playgroud)

...然后它就可以干净地编译了。“看不清”的情况之一。TFS 突出显示了我无意中更改的内容。