C#:数据类型与类型相同吗?
也许这很愚蠢,但我不确定类型和数据类型之间是否有区别C#:数据类型与类型相同吗?,c#,types,C#,Types,也许这很愚蠢,但我不确定类型和数据类型之间是否有区别 int是数据类型 class A{} A是类型还是数据类型?同样的事情实际上在.NET中有引用类型和值类型。值类型为enum或struct,引用类型为class int是一个别名,它是一个结构和so值类型,而在您的例子中,a是类,所以是引用类型。同样的事情,只需将其视为类型。具体来说,示例中的A是引用类型。A是一种可以具有属性/成员变量的类型,这些属性/成员变量可以是其他类型或数据类型(int,string) 但是,就框架而言,一切都是一种
int
是数据类型
class A{}
A是类型还是数据类型?同样的事情实际上在.NET中有引用类型和值类型。值类型为
enum
或struct
,引用类型为class
int
是一个别名,它是一个结构和so值类型,而在您的例子中,a
是类,所以是引用类型。同样的事情,只需将其视为类型。具体来说,示例中的A是引用类型。A
是一种可以具有属性/成员变量的类型,这些属性/成员变量可以是其他类型或数据类型(int
,string
)
但是,就框架而言,一切都是一种类型(引用或值)。在任何.NET语言中都没有“数据类型”这样的东西。“数据类型”通常用于说明“类型”是指变量的实际运行时类型,而不是表示值的“种类”的更抽象的概念
int
是所谓的值类型。所有基元类型(int
、double
、char
等)都是值类型,但string
除外,它是一种引用类型(尽管与值类型一样,它是不可变的)
任何声明为类的对象都是引用类型。声明为结构的任何对象都是值类型。来自C#Spec第1.3节
1.3类型和变量
C#中有两种类型:值类型和引用
类型。值类型的变量
直接包含他们的数据,而
引用类型的变量存储
参考他们的数据,后者
被称为物体。参考
类型,可能有两种
引用同一对象的变量
这样就有可能在
影响对象的一个变量
被另一个变量引用。具有
值类型,每个变量都有
他们自己的数据副本
不可能在一对一上进行操作
影响另一方(情况除外
ref和out参数变量)
C#的值类型进一步分为简单类型,enum
类型、结构类型和
可空类型,C#的引用类型被进一步划分
进入类类型、接口类型、,
数组类型和委托
类型
int是一个值类型,也是一个简单类型,也是一个有符号整数
类a{}是一种引用类型,它是用户定义的类类型。这是一个需要理解的重要区别,但“数据类型”和“类型”引用的是同一个概念。引用类型可为null,而值类型不可为null。@controlbreak:C#3.0引入了可为null的值类型。请参阅:“可为null的类型表示可以指定null值的值类型变量。”我们不要忘记,至少有五只鹅被称为“Gaggle”。@0xA3:NET2.0引入了泛型的概念,它添加了null
结构。VB.NET和C#中的语法糖(从VS 2005开始)允许赋值和比较到“null”(虽然它实际上没有给结构赋值,而比较到null只检查HasValue
属性)。