2009-02-19 12 views

Antwort

9

Dies wurde im Prinzip abgedeckt before, aber ja gibt es Unterschiede: im Grunde werden die VB-Helfer zusätzliche Arbeit für Sie tun, um die Parse zu bekommen, wo die Generika eine Ausnahme werfen, und im Allgemeinen aber nicht allgemein die VB-Helfer sind schneller (obwohl ich nicht weiß, ob es wirklich so ist), weil sie wirklich nur IL-Zucker sind. Nach Geschmack würzen.


Edit: This guy deckt es besser als ich kann.

Bearbeiten Redux: Joel Coehoorn empfiehlt auch die precursor to the above article, und hat anscheinend einige Benchmarking in den Ärmel irgendwo.

Joel schrieb:

Die Zusammenfassung ist die CInt() ist ein Operator, während Convert.ToInt32() ist eine Funktion. CInt lebt irgendwo in zwischen (int) x; und Convert.ToInt32 (x) ;.

+1

Huh: Sie haben Ihre bearbeiten, während ich meine Post erforschte - meist auf der Suche nach (und andernfalls zu finde) den von mir erwähnten Referenzlink. Es ist lustig, weil Ihr Link der Nachfolger des gleichen Autors ist, den ich gepostet habe. Wenn Sie eine weitere Bearbeitung vornehmen, um beide hinzuzufügen, lösche ich meinen Beitrag zugunsten Ihres. –

+1

Fertig, aber ich wäre nicht beleidigt, wenn du es in dir editierst :) – annakata

+0

Ich liebte Joels Zusammenfassung. Vielen Dank – Sung

1

Es gibt einen weiteren großen Unterschied, den ich gerade entdeckt habe und ich denke, es ist erwähnenswert hier - wenn auch einige Jahre nach dem OP! CInt({Boolean expression}) auswertet, wenn True auf -1, während Convert.ToInt<n> auf 1 wertet

Dieser jemand fangen konnte, wer die ehemalige in einer Mathe-Auswertungen verwendet wird, EG:

For i As Integer = 0 To 1 - CInt(processThirdItem) 'Evaluates to -1 (1 - -1 = 2) 
    'Do stuff... 
Next 

Also, mit Convert.ToInt32 anstelle von CInt wouldn Es funktioniert nur, wenn Sie den Operator von - zu + geändert haben.

Natürlich .NET ist kurzgeschlossen If Funktion bietet nun eine viel bessere Möglichkeit, dies zu tun:

For i As Integer = 0 to If(processThirdItem, 2, 1) 
    'Do stuff... 
Next