Mit VB.NET versuche ich, eine Codebasis nach ReSharper Richtlinien zu bereinigen. Im Moment habe ich den folgenden Code:Implizit definierte Variable löst Laufzeitfehler aus, während explizit definiert nicht
'oSearchInput is defined outside this question
Dim oSearchRoutines As New SearchClient
Dim oSearchResults As List(Of SearchResult)
oSearchRoutines = 'WcfCallThatReturnsSearchClient
oSearchResults = oSearchRoutines.getSearchResults(oSearchInput).ToList
Jetzt funktioniert dies völlig in Ordnung, aber ReSharper warnt davor, dass As New SearchClient
hat ‚Wert zugewiesen nicht in jedem Ausführungspfad verwendet wird.‘ Also habe ich diesen Teil entfernt, um diesen Code zu bekommen:
'oSearchInput is defined outside this question
Dim oSearchRoutines
Dim oSearchResults As List(Of SearchResult)
oSearchRoutines = 'WcfCallThatReturnsSearchClient
oSearchResults = oSearchRoutines.getSearchResults(oSearchInput).ToList
Wenn ich das richtig verstehe, sollte alles genauso funktionieren. Es wird jedoch ein Fehler beim Aufruf ToList
:
Öffentliche Mitglied 'ToList' am Typ 'SearchResult()' nicht gefunden.
Ich bin mir nicht ganz sicher, warum es einen Unterschied zwischen den zwei Schnipsel gibt, die ich hier habe.
'As New SearchClient' macht mehr als die Art zu erklären, schafft es das Objekt. Wenn Sie später das Objekt von der Wcf-Methode zuweisen, wurde das erste nicht verwendet und wurde ohne Grund erstellt. Die zweite Deklaration, Dim oSearchRoutines' wird nicht unter Option Strict kompiliert und ist nur System.Object. Sie können einen Typ deklarieren, ohne ihn zu erstellen: 'Dim oSearchRoutines As SearchClient' – Plutonix
Ich bin mir nicht ganz sicher, aber ich denke, die Fehlermeldung ergibt sich aus einer Überschneidung von späten Bindungs- und Erweiterungsmethoden. 'ToList' ist eine von Linq bereitgestellte Erweiterungsmethode. Wenn Sie den Typ von' oSearchRoutines' explizit deklarieren, kann der Compiler "ToList" finden, aber wenn er vom Typ "Object" ist, wird die Laufzeitauflösung nicht gefunden die Erweiterungsmethode. – Craig