C# предупреждения компилятора о неявных актерах в петле Foreach (IDE0220)C#

Место общения программистов C#
Ответить Пред. темаСлед. тема
Anonymous
 C# предупреждения компилятора о неявных актерах в петле Foreach (IDE0220)

Сообщение Anonymous »

В качестве упрощенного примера моей проблемы у меня есть массив изометипа , и я хочу рассказать о всех элементах в этом массиве, которые на самом деле являются mytype , но я получаю IDE0220 предупреждения «Добавьте явное бросок в петле Foreach», который я не думаю, что применимо. Вот пример кода: < /p>

Код: Выделить всё

public interface ISomeType {
void DoThing();
}

public class MyType: ISomeType {
void DoThing() { /* do something */ }
void DoMyTypeThing() { /* do something specific to MyType */ }
}

public class YourType: ISomeType {
void DoThing() { /* do something */ }
void DoMyTypeThing() { /* do something specific to MyType */ }
}

ISomeType[] maybeMyTypes = [new MyType()];

// I get the error on this line because I cast the element into `MyType`
foreach (MyType foobar in maybeMyTypes.Where(i => i.GetType() == typeof(MyType))) {
// use the MyType methods availbale on foobar
}
Компилятор жалуется, что он неявно раздает элементы, возможно, foobars в Mytype , и что это может выйти из строя во время выполнения, поэтому я должен быть откровенен о актерском составе: < /p>

// Code with violations.
var list = new List();
foreach (string item in list) { }

// Fixed code.
var list = new List();
foreach (string item in list.Cast())
< /code>
< /blockquote>
Может ли мой код на самом деле не сработал во время выполнения, так как я проверяю тип и неявно, только если тип правильный? Или компилятор C# недостаточно умный, чтобы увидеть, что я охранял от неверных типов?


Подробнее здесь: https://stackoverflow.com/questions/794 ... op-ide0220
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение
  • C# предупреждения компилятора о неявных актерах в петле Foreach (IDE0220)
    Anonymous » » в форуме C#
    0 Ответы
    8 Просмотры
    Последнее сообщение Anonymous
  • Как я могу добавить условие «если» в Laravel Pagination, которое я использовал в петле Foreach?
    Anonymous » » в форуме Php
    0 Ответы
    18 Просмотры
    Последнее сообщение Anonymous
  • DD не работает в вложенной петле Foreach [Duplicate]
    Anonymous » » в форуме Php
    0 Ответы
    8 Просмотры
    Последнее сообщение Anonymous
  • PHP Как определить первую и последнюю итерацию в петле Foreach?
    Anonymous » » в форуме Php
    0 Ответы
    12 Просмотры
    Последнее сообщение Anonymous
  • Почему деструктор отключает генерацию неявных методов перемещения?
    Гость » » в форуме C++
    0 Ответы
    39 Просмотры
    Последнее сообщение Гость

Вернуться в «C#»