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#实现共享这两个元素。感谢链接。信息量很大。回答得切中要害,有很好的参考价值。谢谢