2009-02-19 21 views

Odpowiedz

9

Zostało to objęte w zasadzie before, ale tak, istnieją różnice: w zasadzie pomocnicy VB wykonają dodatkową pracę, aby przeanalizować, gdzie generycy rzucają wyjątek, a ogólnie, ale nie ogólnie, pomocnicy VB są szybsze (choć nie wiem, czy to w znacznym stopniu), ponieważ są po prostu IL-em. Dopraw do smaku.


Edytuj: This guy obejmuje go lepiej niż ja.

Edytuj Redux: Joel Coehoorn również poleca precursor to the above article i najwyraźniej ma gdzieś test porównawczy.

Joel napisał:

Podsumowanie jest CInt() jest operatorem , natomiast Convert.ToInt32() jest funkcja. CInt mieszka gdzieś w między (int) x; i Convert.ToInt32 (x) ;.

+1

huh: dokonaniu zmienił natomiast szukałem mój post - przeważnie szuka (i nie ustanawiając znajdź) link do benchmarkingu, o którym wspomniałem. To zabawne, ponieważ twój link jest kontynuacją tego samego autora do tego, który napisałem. Jeśli wykonasz kolejną edycję obejmującą oba elementy, usunę mój post na Twoją. –

+1

Zrobione, ale nie obraziłbym się, gdybyś to zmienił w swoim stylu :) – annakata

+0

Uwielbiam podsumowanie Joela. Dziękuję Ci – Sung

1

Jest jeszcze jedna wielka różnica, którą właśnie odkryłem i myślę, że warto o tym tutaj wspomnieć - choć kilka lat po OP! CInt({Boolean expression}) ma wartość -1, gdy True, natomiast Convert.ToInt<n> ocenia na 1.

To może złapać kogoś, kto jest wykorzystywane były w ciągu ocenach matematycznych, EG:

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

Więc korzystając Convert.ToInt32 zamiast CInt Wouldn działa, chyba że zmieniłeś operatora z - na +.

Of zwarcie If funkcji użytkownika kursu .NET zapewnia teraz znacznie lepszy sposób to zrobić:

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