C# Compiler -Warnungen über implizite Abgüsse in foreach Loop (IDE0220)C#

Ein Treffpunkt für C#-Programmierer
Anonymous
 C# Compiler -Warnungen über implizite Abgüsse in foreach Loop (IDE0220)

Post by Anonymous »

Als vereinfachtes Beispiel für mein Problem habe ich ein Array von Isometype und möchte alle Elemente in diesem Array, die tatsächlich MyType sind, übergehen, aber ich bekomme IDE0220 Warnungen "Fügen Sie explizite Besetzung in foreach Loop hinzu", die ich nicht für beantragen kann. Hier ist ein Codebeispiel: < /p>

Code: Select all

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
}
Der Compiler beklagt sich darüber, dass er implizit die Elemente von vielleichtfoobars in myType eingeht und dass dies zur Laufzeit fehlschlagen kann. Daher sollte ich in Bezug auf die Besetzung explizit sein: < /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>
Kann mein Code zur Laufzeit tatsächlich fehlschlagen, da ich den Typ überprüfe und nur implizit gießt, wenn der Typ korrekt ist? Oder ist der C# Compiler nicht klug genug, um zu sehen, dass ich vor den Typen geschützt habe?

Quick Reply

Change Text Case: 
   
  • Similar Topics
    Replies
    Views
    Last post