2010-10-16 15 views
13

Jeśli chodzi o najlepsze praktyki, czy istnieje znacząca różnica między używaniem:Czy istnieje znacząca różnica między "Double" i "double" w .Net?

Double d; 

i

double d; 

wiem najlepsze praktyki są najeżone sprzeczności, więc wiem, że odpowiedzi mogą różnić się tutaj. Chcę tylko poznać pragmatyczną różnicę między tymi dwoma.

+3

Zobacz także http://stackoverflow.com/questions/1947068/in-c-są-dziesiętne-i-dziesiętne-różne i http://stackoverflow.com/questions/215255/string-vs-string-in-c i http://stackoverflow.com/questions/915938/różnica między separatorem dziesiętnym a dziesiętnym i http://stackoverflow.com/questions/1017282/c-difference-between-system-object-and-object. Nie są * dokładnymi * duplikatami, ale równie dobrze mogą być. – LukeH

Odpowiedz

14

Nie ma różnicy. double to tylko alias dla System.Double w C#.

Należy zauważyć, że VB.NET nie ma tego samego aliasingu (int dla System.Int32, double dla System.Double itd.), Więc aliasing ma zastosowanie tylko do C#, a nie .NET jako całości.

+0

Więc biorę to, jeśli jeden chciałem trzymać się przy użyciu typów systemowych, Int32 byłby preferowany do int. – IamIC

+1

@IanC: tak, ale nie wiem, dlaczego ktoś chciałby trzymać się typów Systemowych. Nie ma żadnej szczególnej korzyści. –

+0

@Adam Przypuszczam, czysto z punktu widzenia, że ​​jest to baza, a typy są czasami bardziej opisowe (Int32 vs. int). – IamIC

10

Nie, nie ma różnicy: double to słowo kluczowe w języku C#, które jest aliasem dla typu System.Double.

+1

To jest złe. Istnieje bardzo ważna różnica między "podwójnym" i "Podwójnym": "podwójne" zawsze * zawsze * odnosi się do "System.Double", "Double" będzie odnosić się do tego, co "Double" dzieje się w zasięgu. Ponadto, uważam, że "podwójne" nie jest częścią ECMA C# lub ISO C#, tylko Microsoft Visual C#, więc nie jest gwarantowane działanie na wielu platformach. –

+4

@ Jörg: 'double' jest bardzo częścią ECMA/ISO C# i * jest * gwarantowane działanie na wszystkich zgodnych ze specyfikacją implementacjach. Jeśli chodzi o 'Double', odnosząc się do dowolnego" Double "jest w zakresie: to oczywiste; zauważ, że starałem się konkretnie powiedzieć "System.Double" w mojej odpowiedzi. (I każdy, kto deklaruje własny "Double" typ - lub "Int32" lub "DateTime" lub "Object" itd. - w bardziej lokalnym obszarze nazw, powinien być przygotowany do radzenia sobie z pułapkami.) – LukeH

0

W C# Podwójne i podwójne są takie same, jednak Podwójne guranate, aby były takie same na wszystkich platformach .NET, i o ile pamiętam podwójne IS jest takie samo na wszystkich platformach, ale nie jest gwarantowane jako takie (mimo będąc de facto).

+4

To jest złe. 'double' nie jest aliasem dla' Double', jest aliasem dla 'System.Double'. Co oznacza, że ​​istnieje bardzo ważna różnica między "podwójnym" i "Podwójnym": "podwójne" zawsze * zawsze * odnosi się do "System.Double", "Podwójne" odnosi się do tego, co "Podwójny" jest w zasięgu. –

0

Właściwie ... po demontażu dowiedziałem się, że System.Double jest opakowaniem wokół podwójnego ... Więc podwójne nie jest "skrótem" do System.Double.

1

mała różnica tutaj.

-Można mieć klasę, parametr, var o nazwie "Double", ale jeśli chcesz ją nazwać "double", musisz wpisać @double.

- Możesz użyć kwalifikatora do podwójnego, ale nie podwójnego. ex

System.Double d; //Correct 
System.double d; //incorrect. Compiler error: Identifier expected for "System." . 
Double Double,@double;//Correct 
double double;//incorrect ,Identifier expected for both doubles 

samo dla klas i parametrów .... Również sama dla strunami, Boolean-bool .....