在C#中,如果我使用小写字母“d”的decimal
,IDE会将其显示为深蓝色(如int
)。如果我使用大写字母“D”的Decimal
,IDE会将其显示为青色(如类名)。在两种情况下,工具提示是struct System.Decimal
。
有什么区别吗?有一个“首选”吗?
不是的;完全一样的。 decimal
被定义为 System.Decimal
的别名,并且通常更受欢迎,除了公共方法名,应该使用正确的名称(ReadDecimal
等) - 因为你的调用者可能不是 C#。这在 int
与 ReadInt32
的区别中更容易被注意到。
当然,没有 Java 风格的装箱差异。
(当然,如果您声明了一个更多命名空间局部的 Decimal
,它会做一些完全不同的事情,那么就会有区别,但那是愚蠢的)。
其实这两个东西是一样的,Decimal是.Net类型,而decimal则是C#关键字。
System.Decimal
是.NET Framework中的一种类型,而decimal
则是C#语言中的别名。
它们都被编译成IL中的System.Decimal
,因此没有区别。
同样的情况也适用于int
和System.Int32
、string
和System.String
等。
decimal
是一个关键字,它总是指向基类库中定义的结构体 System.Decimal
。在大多数人的源代码顶部有 using System;
,因此 Decimal
通常意味着与之相同的东西。但是,严格来说,它们并不完全相同(你不能盲目地查找和替换它们):
namespace Test {
class Decimal { }
}
// File2.cs
using Test;
class DecimalIsNotdecimal {
void Method(decimal d) { ... }
void Method(Decimal d) { ... } // works!
}
decimal是Decimal的别名,它们是同一个东西。
深蓝色用于语言关键字,青绿色用于类型。在decimal
的情况下,它是代表类型别名的关键字。
不是的。它们只是快捷方式。
如果你将鼠标悬停在十进制上,你会看到 System.Decimal。就像 int 和 System.Int32、object 和 System.Object、string 和 System.String、double 和 System.Double 一样。
我更喜欢使用 decimal 和 string,但我认为这真的是个人喜好。
这是同样的事情。“decimal”是C#中System.Decimal的关键字。
这也适用于其他类型,如string和String等。