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
属性)。