Ich bin ein bisschen mit diesem Verhalten verwirrteWarum schlägt die Typinferenzlogik mit einer Iteration über eine TreeNodeCollection fehl?
Dieser Code kompiliert fein:
private void CheckAvailabilityOfCurrentTreeNodes() {
foreach(TreeNode treeNode in this.DeviceTree.Nodes) {
if(Object.ReferenceEquals(treeNode.Tag, _recorder.CaptureDevice)) {
...
}
}
}
aber die folgende erzeugt eine Kompilierung Fehlermeldung, dass 'object' does not contain a definition for 'Tag'
private void CheckAvailabilityOfCurrentTreeNodes() {
foreach(var treeNode in this.DeviceTree.Nodes) {
if(Object.ReferenceEquals(treeNode.Tag, _recorder.CaptureDevice)) {
...
}
}
}
In diesem Fall ist der Typ -Interference-Logik gibt Object
als Ergebnistyp des Iterators zurück, aber ich verstehe nicht klar warum, da TreeNodeCollection
stark typisiert ist. Liegt es daran, dass dieser Sammlungstyp ziemlich alt ist?
Kann mir jemand die technischen Gründe für dieses Verhalten aufklären?
In der Tat, die stark typisierte 'Fassade' der Kollektion ließ mich glauben, dass sie irgendwie stark typisiert war. Danke für die Einsicht! – BlueStrat