C# double 与 Double的关系问题

Double是一个类(在vs2010中以蓝绿色显示),double是一种基础数据类型(在vs2010中以蓝色显示)。
如果声明了一个double类型的变量c:double c=3;
c仅仅是一个变量,为什么变量c具有 .tostring()方法?

网上的解释是:c#把double默认的转换成了Double,就是说你申明了一个double的数据,c#会根据这个double数据自动建立一个Double对象
这是什么意思?c 是一个值类型的数据,存储在栈中,如果C#根据这个double数据自动建立一个Double对象,那么这个Double对象应该存储在堆中?那么栈中的变量c如何与堆中对应的对象相联系?难道栈中的变量c存放的是堆中对应对象的地址吗?

double是C#的关键字,编译以后,实际上double就是Double。

由于CLR平台有很多语言,不同语言的关键字不一定相同,但是编译以后实际上都是一样的。

你可以把double看作是Double的别名。

 

Double是struct,当然是值类型的,存储在栈中的。

追问

请问大哥:
为什么别人说Double是个类,而你说Double是一个结构?

追答

你选中Double,按F12转到定义。

 

别人说Double是一个类并没有错。

值类型继承自ValueType,而ValueType又继承自Object(所以也是类)

ToString()方法来自:

温馨提示:答案为网友推荐,仅供参考
第1个回答  2013-10-09
小写的是C#关键字,大写的是.NET Framework 类型,实际是一样的。

下表显示了内置 C# 类型的关键字,这些类型是 System 命名空间中的预定义类型的别名。
C# 类型
.NET Framework 类型

bool
System.Boolean

byte
System.Byte

sbyte
System.SByte

char
System.Char

decimal
System.Decimal

double
System.Double

float
System.Single

int
System.Int32

uint
System.UInt32

long
System.Int64

ulong
System.UInt64

object
System.Object

short
System.Int16

ushort
System.UInt16

string
System.String
第2个回答  2013-10-10
万是万物皆对象,这是面向对象的顶级法则。

是CLASS也好,还是struct也罢,都是对象。

对象,分为,引用类型和值类型。

double是值类型,不管是蓝色还是绿色,大写还是小写。都是值类型。

另一个例子,string,不管蓝色还是绿色,都是引用类型,不是值类型。不过它的使用和值类型差不多。原因它是个char数组。

再说两句:

在c#里,struct结构在编程使用当中,已经和class没有太多区别。

只不过传参数的过程当中,值类型,传的是值,引用类型传的类似于指针的东西。

传值效率来讲,引用类型快。
第3个回答  2013-10-09
没必要纠结这方面的,只要用了就行了。
Double中提供很多转换方法的,很方便。
相似回答