Gesetzt ich eine Zeichenfolge, die ich in eine ganze Zahl konvertieren möchten, würde ichWarum muss ich eine Out-Variable initialisieren, wenn Linq mit
int i;
int.TryParse(someString, out i);
Jetzt tun würde ich das gleiche in einer Linq zu tun query:
int i;
var numbers =
from s in someStrings
where int.TryParse(s, out i)
select i;
Aber diese
CS0165 Verwendung von nicht zugewiesenen lokalen variablen 'i'
mit dem Fehler zu kompilieren verweigert
Es kompiliert und funktioniert wie vorgesehen, wenn ich i auf einen Arbitratwert initialisiere. Aber warum muss ich?
einige Alternativen http://stackoverflow.com/questions/1297231/convert-string-to-int-in-one-line-of-code-using-linq/37033140#37033140 – Slai
Das ist großartig, weil LINQ Funktionen sollen keine Nebenwirkungen erzeugen (dh den Status außerhalb des eigenen Methodenbereichs ändern). C#, das keine strenge funktionale Programmiersprache ist, kann dies nicht erzwingen, aber zumindest ist dies ein Beispiel, wo dies geschieht. Um dies ordentlich zu machen, müssen Sie eine Alternative verwenden, die 'i' im Delegierten (für die Methode' Where') selbst deklariert. –