C# 基本数据类型如何具有函数?
可能重复:C# 基本数据类型如何具有函数?,c#,types,C#,Types,可能重复: 我正在学习C#,我发现以下代码令人困惑: int.Parse() 基本数据类型如何具有函数?在.net framework中的基本类型是结构在C#中,诸如int之类的类型是一种混合类型-它们都是包含值的基本值类型,但它们也是structs-System.Int32-包含方法和实例方法(您可以调用myInt.ToString(),甚至5.ToString())和静态方法(int.Parse(),这是System.Int32.Parse()基本数据类型都是结构。可以找到与“本机”结构区
我正在学习C#,我发现以下代码令人困惑:
int.Parse()代码>
基本数据类型如何具有函数?在.net framework中的基本类型是结构
在C#中,诸如int之类的类型是一种混合类型-它们都是包含值的基本值类型,但它们也是structs-System.Int32-包含方法和实例方法(您可以调用myInt.ToString()
,甚至5.ToString()
)和静态方法(int.Parse()
,这是System.Int32.Parse()
基本数据类型都是结构。可以找到与“本机”结构区别的一个很好的解释。基本类型实际上是C#中的struct
对象
对于int,它由一个Int32结构表示。实际上,您可以通过悬停int
单词来轻松查看它:
根据.net规范,数据类型分为基于堆栈的变量或基于堆的变量。这一区别在于变量的存储方式和位置。基于堆栈的变量按值存储
现在集中讨论您的问题,int如何具有函数。如果您遍历了int、short、decimal、string、double、long等所有整型数据类型,那么..都有一个相应的基于堆的类
.net编译器在内部将整型(基元)转换为基于堆的表示
所以int变成了Int32
短变为int16
等等
顺便说一句,整数类型、结构、枚举都是基于堆栈的变量,它们直接存储在内存中而不是作为引用。我有一个问题:为什么它们不会呢?@gdoron据我所知,只有对象和结构变量可以有函数(在C++/Java中).这里有太多的错误,这一定是个笑话,对吧?找到教你这个的家伙,揍他!=)不完全是,int
只是系统的语法糖。Int32
,它是结构
,意思是它继承自值类型
,它继承自对象
。int
和System.Int32
都编译成相同的字节码Parse()
和TryParse()
是Int32
的一部分,而.ToString()
来自对象。Int32
struct保存值。所以它们是混合的还是仅结构的?当我说混合的时候,我的意思是它们都是一种原始值类型(像在C和其他语言中),但像在Java中一样,整数是一个完整的对象,它们是从对象派生出来的,并且有方法。C#实现共享这两个元素。感谢链接。信息量很大。回答得切中要害,有很好的参考价值。谢谢