2010-10-16 34 views
13

Liên quan đến thực hành tốt nhất, có sự khác biệt có ý nghĩa giữa việc sử dụng:Có sự khác biệt có ý nghĩa giữa "Double" và "double" trong .Net không?

Double d; 

double d; 

Tôi biết thực hành tốt nhất là đầy mâu thuẫn, vì vậy tôi biết câu trả lời có thể khác nhau ở đây. Tôi chỉ muốn biết sự khác biệt thực dụng giữa hai người.

+3

Xem thêm http://stackoverflow.com/questions/1947068/in-c-là-thập phân và thập phân-khác nhau và http://stackoverflow.com/questions/215255/string-vs-string-in-c và http://stackoverflow.com/questions/915938/differential-between-decimal-and-decimal và http://stackoverflow.com/questions/1017282/c-difference-between-system-object-and-object. Chúng không phải là * chính xác * trùng lặp, nhưng chúng cũng có thể được. – LukeH

Trả lời

14

Không có sự khác biệt. double chỉ là bí danh cho System.Double trong C#.

Lưu ý rằng VB.NET không có cùng một răng cưa (int cho System.Int32, đôi cho System.Double, vv), do đó, các răng cưa là chỉ áp dụng cho C#, không .NET như một toàn thể.

+0

Vì vậy, tôi lấy nó nếu một muốn gắn bó với việc sử dụng các kiểu hệ thống, Int32 sẽ được ưu tiên int. – IamIC

+1

@IanC: vâng, nhưng tôi không biết tại sao người ta lại muốn dính vào các kiểu hệ thống. Không có lợi thế cụ thể để làm như vậy. –

+0

@Adam Tôi cho rằng hoàn toàn từ quan điểm rằng đó là cơ sở và các loại đôi khi mô tả chi tiết hơn (Int32 so với int). – IamIC

10

Không, không có sự khác biệt: double là từ khóa C# là bí danh cho loại System.Double.

+1

Điều này là sai. Có một sự khác biệt rất quan trọng giữa 'double' và' Double': 'double' sẽ * luôn luôn * tham chiếu đến' System.Double', 'Double' sẽ tham chiếu đến bất kỳ' Double' nào xảy ra trong phạm vi. Ngoài ra, tôi tin rằng 'double' không phải là một phần của ECMA C# hoặc ISO C#, chỉ có Microsoft Visual C#, vì vậy nó không được bảo đảm để làm việc trên nền tảng. –

+4

@ Jörg: 'double' là một phần rất nhiều của ECMA/ISO C# và * được bảo đảm hoạt động giống nhau trên mọi triển khai tuân thủ đặc tả. Đối với 'Double', tham chiếu đến bất kỳ' Double' nào nằm trong phạm vi: mà không cần nói; lưu ý rằng tôi đã cẩn thận nói cụ thể 'System.Double' trong câu trả lời của tôi. (Và bất kỳ ai khai báo 'Double' type - hay' Int32' hay 'DateTime' hay' Object' của riêng mình - trong một không gian tên cục bộ hơn nên được chuẩn bị để xử lý các cạm bẫy.) – LukeH

0

Trong C#, Double và double giống nhau, tuy nhiên Double guranateed giống nhau trên tất cả các nền tảng .NET, và theo như tôi nhớ đôi IS giống nhau trên mọi nền tảng, nhưng không được bảo đảm như vậy (mặc dù là nó thực tế).

+4

Điều này là sai. 'double' không phải là bí danh cho' Double', nó là bí danh cho 'System.Double'. Điều đó có nghĩa là có một sự khác biệt rất quan trọng giữa 'double' và' Double': 'double' sẽ * luôn luôn * tham chiếu đến' System.Double', 'Double' sẽ tham chiếu đến bất kỳ' Double' nào xảy ra trong phạm vi. –

0

Trên thực tế ... sau khi tháo rời tôi phát hiện ra rằng System.Double là một wrapper xung quanh đôi ... Vì vậy, đôi không phải là một "phím tắt" để System.Double.

1

sự khác biệt một chút ở đây.

-Bạn có thể có lớp, thông số, var có tên "Double" nhưng nếu bạn muốn đặt tên là "double" u phải nhập @double.

-Bạn có thể sử dụng Trình phân loại cho Đôi nhưng không thể nhân đôi. cũ

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 

điều tương tự cho các lớp học và các thông số .... cũng tương tự cho chuỗi dây, Boolean-bool .....

Các vấn đề liên quan