数据类型指定变量可以存储的数据的类型,如:整数,浮点,字符等。
C# 语言中有3
种类型的数据类型。如下表中所示 -
类型 | 数据类型 |
---|---|
值数据类型 | int , char , float , Boolean 等 |
引用数据类型 | 字符串,类,对象和接口 |
指针数据类型 | 指针 |
值数据类型
值数据类型是基于整数和基于浮点数。 C# 语言支持有符号和无符号文字值。
C# 语言中有两种类型的值数据类型。
- 预定义的数据类型 - 如整型,布尔型,浮点型等
- 用户定义的数据类型 - 如结构,枚举等
数据类型的内存大小可能会根据32
位或64
位操作系统而不同。我们来看看值数据类型。它的大小根据32
位操作系统给出。
数据类型 | 内存大小 | 范围 |
---|---|---|
char | 1 byte | -128 to 127 |
signed char | 1 byte | -128 to 127 |
unsigned char | 1 byte | 0 to 127 |
short | 2 byte | -32,768 to 32,767 |
signed short | 2 byte | -32,768 to 32,767 |
unsigned short | 2 byte | 0 to 32,767 |
int | 2 byte | -32,768 to 32,767 |
signed int | 2 byte | -32,768 to 32,767 |
unsigned int | 2 byte | 0 to 32,767 |
short int | 2 byte | -32,768 to 32,767 |
signed short int | 2 byte | -32,768 to 32,767 |
unsigned short int | 2 byte | 0 to 32,767 |
long int | 4 byte | |
signed long int | 4 byte | |
unsigned long int | 4 byte | |
float | 4 byte | |
double | 8 byte | |
long double | 10 byte | - |
要在特定平台上获取类型或变量的确切大小,可以使用sizeof
方法。 表达式sizeof(type)
产生对象或类型的存储大小(以字节为单位)。以下是在任何机器上获取double
类型的大小的示例:
using System;
namespace DataTypeApplication
{
class Program
{
static void Main(string[] args)
{
Console.WriteLine("Size of double: {0}", sizeof(double));
Console.ReadLine();
}
}
}
当编译和执行上述代码时,会产生以下结果:
Size of double: 8
引用数据类型
引用数据类型不包含存储在变量中的实际数据,但它们包含对变量的引用。如果一个变量的数据值被更改,则这个变量将自动反映该值的变化。
C# 语言中有两种类型的引用数据类型。
- 预定义类型 - 如对象,字符串。
- 用户定义的类型 - 如类,接口。
内置引用类型的示例有:object
,dynamic
和string
。
对象类型
对象类型是 C# 通用类型系统(CTS)中所有数据类型的最终基类。
当一个值类型转换为对象类型时,它被称为装箱,另一方面,当对象类型转换为值类型时,称为拆箱。
object obj;
obj = 100; // this is boxing
动态类型
可以在动态数据类型变量中存储任何类型的值。这些类型的变量的类型检查在运行时进行。
声明动态类型的语法是:
dynamic <variable_name> = value;
例如,
dynamic d = 20;
字符串类型
字符串类型允许为变量分配任何字符串值。String
类型是System.String
类的别名。 它是从Object
类型派生的。可以使用两种形式的字符串文字来分配字符串类型的值:quoted
和@quoted
。
示例
String str = "zaixian Point";
@quoted
字符串文字如下所示:
String str = "zaixian Point";
指针数据类型
C# 语言中的指针是变量,也称为定位符或指示符,指向值的地址。
指针中使用的符号
符号 | 名称 | 说明 |
---|---|---|
& |
地址运算符 | 获取变量的地址 |
* |
间接运算符 | 访问地址的值 |
声明一个指针
C# 语言中的指针可以使用*
(星号符号)声明。
int * a; //pointer to int
char * c; //pointer to char