2010-10-16 2 views
13

Что касается передовой практики, есть смысл разница между использованием:Есть ли значимая разница между «Двойным» и «двойным» в .Net?

Double d; 

и

double d; 

Я знаю, что лучшие практики чреваты противоречиями, поэтому я знаю, что ответы могут изменяться здесь. Я просто хочу знать прагматичную разницу между ними.

+3

Смотрите также http://stackoverflow.com/questions/1947068/in-c-are-decimal-decimal-different и http://stackoverflow.com/questions/215255/string-vs-string-in-c и http://stackoverflow.com/questions/915938/difference-between-decimal-decimal и http://stackoverflow.com/questions/1017282/c-difference-between-system-object-and-object. Они не являются точными * дубликатами, но они также могут быть. – LukeH

ответ

14

Нет никакой разницы. double - это просто псевдоним для System.Double в C#.

Обратите внимание, что VB.NET не имеет одинакового псевдонимов (int для System.Int32, double для System.Double и т. Д.), Поэтому сглаживание применимо только к C#, а не к .NET в целом.

+0

Итак, я считаю, что если один хотел придерживаться использования системных типов, Int32 был бы предпочтен int. – IamIC

+1

@ IanC: да, но я не знаю, почему хотелось бы придерживаться системных типов. Для этого нет особого преимущества. –

+0

@Adam Я предполагаю чисто с точки зрения, что это база и типы иногда более описательные (Int32 vs. int). – IamIC

10

Нет, нет разницы: double - ключевое слово C#, которое является псевдонимом для типа System.Double.

+1

Это неправильно. Существует очень важное различие между 'double' и' Double': 'double' будет * всегда * ссылаться на' System.Double', 'Double' будет ссылаться на то, что' Double' попадает в область видимости. Кроме того, я считаю, что 'double' не является частью ECMA C# или ISO C#, а только Microsoft Visual C#, поэтому не гарантируется работа кросс-платформенной. –

+4

@ Jörg: 'double' - это очень большая часть ECMA/ISO C# и * * гарантированно работает одинаково при любой спецификации, совместимой со спецификацией. Что касается «Двойной», относящейся к тому, что «Двойной» находится в области: это само собой разумеется; Обратите внимание, что я был осторожен, чтобы сказать «System.Double» в своем ответе. (И любой, кто объявляет свой собственный тип «Double» - или «Int32» или «DateTime» или «Object» и т. Д. - в более локальном пространстве имен, должен быть подготовлен для обработки подводных камней.) – LukeH

0

В C# двойные и двойные одинаковые, но Double одинаковы для всех платформ .NET, и, насколько я помню, двойной IS одинаковый на всей платформе, но не гарантирован как таковой (несмотря на будучи де-факто).

+4

Это неправильно. 'double' не является псевдонимом для' Double', это псевдоним 'System.Double'. Это означает, что существует очень важная разница между 'double' и' Double': 'double' будет * всегда * ссылаться на' System.Double', 'Double' будет ссылаться на то, что« Double »окажется в области видимости. –

0

На самом деле ... после разобрания я узнал, что System.Double - это оболочка вокруг double ... Так что double не является «ярлыком» для System.Double.

1

бит отличие здесь.

-Вы можете иметь класс, параметр, var с именем «Двойной», но если вы хотите называть его «double», вы должны ввести @double.

-Вы можете использовать Qualifier для Double, но не для двойного. экс

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 

то же самое для классов и параметров .... также же для струнной струны, булева-BOOL .....

Смежные вопросы