Czy w VB.NET istnieje różnica między Integer
a Int32
?Czy jest jakaś różnica między Integer i Int32 w VB.NET?
Jeśli tak, proszę wyjaśnić.
Czy w VB.NET istnieje różnica między Integer
a Int32
?Czy jest jakaś różnica między Integer i Int32 w VB.NET?
Jeśli tak, proszę wyjaśnić.
Funkcjonalnie nie ma różnicy między typami Integer
i System.Int32
. W języku VB.NET Integer
to tylko alias dla typu System.Int32
.
Identyfikatory Int32
i Integer
nie są jednak zupełnie takie same. Integer
jest zawsze aliasem dla System.Int32
i jest zrozumiały dla kompilatora. Int32
Mimo że kompilator nie jest specjalnie obudowany i przechodzi przez zwykłe rozpoznawanie nazw jak każdy inny typ. Dlatego w niektórych przypadkach może się zdarzyć, że Int32
będzie wiązał się z innym typem. Jest to jednak bardzo rzadkie; nikt nie powinien definiować swojego własnego typu.
Oto konkretne repro, które pokazuje różnicę.
Class Int32
End Class
Module Module1
Sub Main()
Dim local1 As Integer = Nothing
Dim local2 As Int32 = Nothing
local1 = local2 ' Error!!!
End Sub
End Module
W tym przypadku local1
i local2
są rzeczywiście różne typy, ponieważ Int32
wiąże się dla określonego rodzaju w ciągu System.Int32
.
@JaredPar, Dziękuję za wyjaśnienia i wielkie dzięki za nie umieszczenie komentarza w stylu "złamane Google'a?" lub coś. :) – Vikram
@MitchWheat i googled pytanie i nie znalazłem odpowiedniego wyjaśnienia. Większość linków mówi "nie ma różnicy", co jest nieprawidłowe. Jest jedna odpowiedź na stronie internetowej msdn, która miała przyzwoite wyjaśnienie, ale była dość daleko w moich wynikach Google. – JaredPar
Nie ma różnicy. Twoja odpowiedź brzmi: "Fakcyjnie nie ma różnicy między typami" –
@MitchWheat ... Google udzielił mi mylących odpowiedzi. Tak więc, pomyślałem o tym tutaj. Wiem, jak szukać. – Vikram
OK, Int32 i Integer są różne. Które zalecałbyś używać w projektach, w których nie ma wcześniej istniejącego standardu - i dlaczego? Przypuszczalnie ta myśl była za pytaniem @ Vikrama. – finch