C# 基础篇 - 数据类型
C# 数据类型
在 C# 中,变量分为以下几种类型:
- 值类型(Value types)
- 引用类型(Reference types)
- 指针类型(Pointer types)
值类型(Value types)
从类 System.ValueType 中派生。可以直接分配给一个值。
值类型直接包含数据。比如 int、char、float,它们分别存储数字、字母、浮点数。声明一个具体类型时,系统自动分配内存来存储。
C# 中可用的值类型:
| 类型 | 描述 | 范围 | 默认值 |
| bool | 布尔值 | True 或 False | False |
| byte | 8 位无符号整数 | 0 到 255 | 0 |
| char | 16 位 Unicode 字符 | U +0000 到 U +ffff | '' |
| decimal | 128 位精确的十进制值,28-29 有效位数 | (-7.9 x 1028 到 7.9 x 1028) / 100 到 28 | 0.0M |
| double | 64 位双精度浮点型 | (+/-)5.0 x 10-324 到 (+/-)1.7 x 10308 | 0.0D |
| float | 32 位单精度浮点型 | -3.4 x 1038 到 + 3.4 x 1038 | 0.0F |
| int | 32 位有符号整数类型 | -2,147,483,648 到 2,147,483,647 | 0 |
| long | 64 位有符号整数类型 | -923,372,036,854,775,808 到 9,223,372,036,854,775,807 | 0L |
| sbyte | 8 位有符号整数类型 | -128 到 127 | 0 |
| short | 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 类型的存储尺寸:
1 namespace TypeApplication 2 { 3 class TypeProgram 4 { 5 static void Main(string[] args) 6 { 7 Console.WriteLine("Size Of Int: {0}", sizeof(int)); 8 Console.ReadLine(); 9 } 10 } 11 }
输出结果:
Size Of Int: 4
引用类型(Reference types)
引用类型是对变量的引用,而非存储在变量中的实际数据。实际上是一个内存位置。
使用多个引用类型变量时,可以指向一个内存位置。如果内存位置的数据通过其中一个变量修改,其他变量会自动反映值的变化。
引用类型有:object、dynamic 和 string。
对象类型(Object)
对象(Object)类型 是 C# 通用类型系统(Common Type System - CTS)中所有数据类型的终极基类,是 System.Object 类的别名。
对象(Object)类型可以被分配任何其他类型(值类型、引用类型、预定义类型或用户自定义类型)的值。在分配值之前,需要先进行类型转换。
一个值类型转换为对象类型时,被称为装箱;一个对象类型转换为值类型时,被称为拆箱。
1 object obj; 2 // 装箱 3 obj = 20;
动态类型(Dynamic)
动态数据类型变量可以存储任何类型的值。程序在运行时才检查变量的类型。
声明动态类型的语法:
dynamic <variable_name> = value;
【示例】:
1 // 声明动态类型数据 2 ynamic d = 20;
注意区别于对象类型。对象类型变量的类型检查是在编译时发生,动态类型变量的类型检查是在运行时发生。
字符串类型(String)
字符串类型变量可存储任何字符串值,是 System.String 类的别名,从对象(Object)类型派生。
字符串类型的值可以通过两种形式分配:
1、引号
1 String str = "My C# Class";
2、@引号
1 @"My C# Class";
C#中字符串前面加 @ 将转义字符 “\” 当作普通字符。以下示例中,两个字符串相同
1 String str1 = @"C:\Windows\System"; 2 String str2 = "C:\\Windows\\System";
@ 字符串中可以任意换行,换行符及缩进空格都计算在字符串长度之内。
1 string str = @"<script type="text/javascript"> 2 <!--语言--> 3 <program name="C#"/> 4 </script>";
用户自定义引用类型有:class、interface 或 delegate。后续补充。
指针类型(Pointer types)
指针类型变量存储另一种类型的内存地址。C# 中的指针与 C 或 C++ 中的指针有相同的功能。
声明指针类型的语法:
type* identifier;
【示例】
1 int* cptr; 2 char* iptr;

浙公网安备 33010602011771号