C# - 数据类型
C#中的变量,分为以下几种类型 -
- 值类型
- 引用类型
- 指针类型
值类型
值类型变量可以直接赋值。它们派生自类 System.ValueType .
值类型直接包含数据。一些示例是 int、char 和 float ,分别存储数字、字母和浮点数。当你声明一个 int 类型,系统分配内存来存储该值。
下表列出了 C# 2010 中可用的值类型 -
类型 | 代表 | 范围 | 默认值 |
---|---|---|---|
bool | 布尔值 | 对还是错 | 假 |
字节 | 8 位无符号整数 | 0 到 255 | 0 |
char | 16 位 Unicode 字符 | U +0000 到 U +ffff | '\0' |
十进制 | 具有 28-29 位有效数字的 128 位精确十进制值 | (-7.9 x 10 28 至 7.9 x 10 28 ) / 10 0 到 28 | 0.0M |
双倍 | 64位双精度浮点型 | (+/-)5.0 x 10 -324 至 (+/-)1.7 x 10 308 | 0.0D |
浮点数 | 32位单精度浮点型 | -3.4 x 10 38 至 + 3.4 x 10 38 | 0.0F |
int | 32位有符号整数类型 | -2,147,483,648 到 2,147,483,647 | 0 |
长 | 64位有符号整数类型 | -9,223,372,036,854,775,808 至 9,223,372,036,854,775,807 | 0L |
sbyte | 8位有符号整数类型 | -128 到 127 | 0 |
短 | 16位有符号整数类型 | -32,768 到 32,767 | 0 |
uint | 32位无符号整数类型 | 0 到 4,294,967,295 | 0 |
ulong | 64位无符号整数类型 | 0 到 18,446,744,073,709,551,615 | 0 |
ushort | 16位无符号整数类型 | 0 到 65,535 | 0 |
要在特定平台上获取类型或变量的确切大小,可以使用 sizeof 方法。表达式 sizeof(type) 产生对象或类型的存储大小(以字节为单位)。以下是获取 int 大小的示例 在任何机器上输入 -
现场演示using System; namespace DataTypeApplication { class Program { static void Main(string[] args) { Console.WriteLine("Size of int: {0}", sizeof(int)); Console.ReadLine(); } } }
当上面的代码编译并执行时,它会产生以下结果 -
Size of int: 4
引用类型
引用类型不包含存储在变量中的实际数据,但它们包含对变量的引用。
换句话说,它们指的是内存位置。使用多个变量,引用类型可以引用一个内存位置。如果内存位置中的数据被其中一个变量改变,另一个变量会自动反映这个值的变化。 内置示例 引用类型是:object , 动态的, 和 字符串 .
对象类型
对象类型 是 C# 通用类型系统 (CTS) 中所有数据类型的最终基类。 Object 是 System.Object 类的别名。可以为对象类型分配任何其他类型、值类型、引用类型、预定义或用户定义类型的值。但是,在赋值之前,需要进行类型转换。
当值类型转换为对象类型时,称为装箱 另一方面,当对象类型转换为值类型时,称为unboxing .
object obj; obj = 100; // this is boxing
动态类型
您可以在动态数据类型变量中存储任何类型的值。这些类型的变量的类型检查在运行时进行。
声明动态类型的语法是 -
dynamic <variable_name> = value;
例如,
dynamic d = 20;
动态类型与对象类型类似,只是对象类型变量的类型检查发生在编译时,而动态类型变量的类型检查发生在运行时。
字符串类型
字符串类型 允许您将任何字符串值分配给变量。字符串类型是 System.String 类的别名。它派生自对象类型。字符串类型的值可以使用两种形式的字符串字面量来分配:带引号的和@quoted。
例如,
String str = "Tutorials Point";
@quoted 字符串文字如下所示 -
@"Tutorials Point";
用户定义的引用类型是:类、接口或委托。我们将在后面的章节中讨论这些类型。
指针类型
指针类型变量存储另一种类型的内存地址。 C# 中的指针与 C 或 C++ 中的指针具有相同的功能。
声明指针类型的语法是 -
type* identifier;
例如,
char* cptr; int* iptr;
我们将在“不安全代码”一章中讨论指针类型。
C语言