C# double 与 Double的关系问题

Double是一个类(在vs2010中以蓝绿色显示),double是一种基础数据类型(在vs2010中以蓝色显示)。如果声明了一个double类型的变量c:doublec... 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存放的是堆中对应对象的地址吗?
展开
 我来答
何宜校
2013-10-09 · TA获得超过1691个赞
知道小有建树答主
回答量:702
采纳率:0%
帮助的人:964万
展开全部

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

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

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

 

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

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

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

 

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

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

ToString()方法来自:

匿名用户
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
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
取券啦
2013-10-10 · TA获得超过107个赞
知道小有建树答主
回答量:174
采纳率:0%
帮助的人:155万
展开全部
万是万物皆对象,这是面向对象的顶级法则。

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

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

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

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

再说两句:

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

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

传值效率来讲,引用类型快。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
FabKiller
2013-10-09 · TA获得超过586个赞
知道小有建树答主
回答量:676
采纳率:0%
帮助的人:483万
展开全部
没必要纠结这方面的,只要用了就行了。
Double中提供很多转换方法的,很方便。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式