Более конкретно, почему эта работа:Как работает ключевое слово «есть»?
foreach (ChangeSetEntry changeRow in changeSet.ChangeSetEntries)
if (changeRow is RouteStage)
{ ... }
, но это не?
ChangeSetEntry changeRow = changeSet.ChangeSetEntries[0];
if (changeRow is RouteStage)
{ ... }
В последнем случае я получаю предупреждение компилятора говоря:
Данное выражение никогда не предоставленного типа.
Я понимаю, что, как changeRow
является ChangeSetEntry
не RouteStage
, так почему же он работает внутри foreach
блока?
Это мое переопределение метода Submit
в сервисе Domain Services службы RIA. RouteStage
- это объект, который я определил для возврата DomainService
.
Это может быть предупреждение, потому что 'changeSet.ChangeSetEntries [0]' может быть аргументом за пределами исключения, тогда как 'foreach' просто не будет выполняться, если нет объектов, которые он собирает, поэтому' is' линия никогда не будет вызвана. – Tim
Ответ находится в определении свойства 'ChangeSetEntries' –
А вы уверены, что два блока кода относятся к тем же типам?Можете ли вы опубликовать краткую, но полную программу, демонстрирующую проблему? –