在编程中,数据类型用于定义变量可以存储的数据种类。C# 是一种强类型语言,这意味着每个变量在使用前都需要声明其类型,并且该类型在整个变量的生命周期内不可改变。了解和掌握 C# 的数据类型对于编写高效、准确的代码至关重要。
基本数据类型
整型
整型数据类型用于存储整数值。C# 提供了几种不同的整型数据类型,每种类型占用的内存空间不同,所能表示的数值范围也不同。以下是几种常见的整型数据类型:
- sbyte:有符号的8位整数,取值范围是 -128 到 127。
- byte:无符号的8位整数,取值范围是 0 到 255。
- short 或 Int16:有符号的16位整数,取值范围是 -32,768 到 32,767。
- ushort 或 UInt16:无符号的16位整数,取值范围是 0 到 65,535。
- int 或 Int32:有符号的32位整数,取值范围是 -2,147,483,648 到 2,147,483,647。
- uint 或 UInt32:无符号的32位整数,取值范围是 0 到 4,294,967,295。
- long 或 Int64:有符号的64位整数,取值范围是 -9,223,372,036,854,775,808 到 9,223,372,036,854,775,807。
- ulong 或 UInt64:无符号的64位整数,取值范围是 0 到 18,446,744,073,709,551,615。
浮点型
浮点型数据类型用于存储小数值。C# 中提供了两种主要的浮点型数据类型:
- float:单精度浮点数,占用32位(4字节),可以表示大约6到7位小数。
- double:双精度浮点数,占用64位(8字节),可以表示大约15位小数。
高精度数字
对于需要高精度计算的场景,C# 提供了 decimal 类型,它占用128位(16字节),可以提供高达28或29位的小数精度,特别适合金融和其他需要高精度计算的应用领域。
字符型
字符型数据类型用于存储单个字符。C# 使用 char
类型来表示字符,每个字符占用16位(2字节)。
char letter = 'A';
布尔型
布尔型数据类型用于存储逻辑值,即真(true)或假(false)。在 C# 中,布尔型数据类型为 bool
。
bool isTrue = true; bool isFalse = false;
复合数据类型
除了基本的数据类型之外,C# 还提供了多种复合数据类型,用于处理更复杂的数据结构。
数组
数组是一种特殊的数据类型,用于存储一组相同类型的元素。数组中的每个元素都通过索引访问,索引从0开始。
int[] numbers = new int[5]; // 创建一个包含5个整数的数组 numbers[0] = 1; numbers[1] = 2; // ...
结构体
结构体是一种用户定义的数据类型,它可以包含不同类型的成员,如字段、方法等。与类不同,结构体是值类型。
struct Point { public int X; public int Y; }
枚举
枚举是一种为一组命名的常量创建同义词的方式。枚举类型可以提高代码的可读性和维护性。
enum Color { Red, Green, Blue }
类
类是面向对象编程的基本构建块之一,它定义了一组相关的属性和方法。类是一种引用类型。
class Person { public string Name; public void SayHello() { Console.WriteLine($"Hello, my name is {Name}"); } }
变量和常量
变量
变量是程序执行期间其值可以改变的存储位置。在 C# 中,变量在声明时必须指定其类型。
int age = 30; string name = "Alice";
常量
常量是一个固定值,在程序执行期间不会改变。声明常量时,必须同时给它赋值,并且需要使用 const
关键字。
const double Pi = 3.14159;
类型转换
类型转换是指将一种数据类型转换成另一种数据类型的过程。C# 支持隐式转换和显式转换。
隐式转换
隐式转换是指编译器自动完成的类型转换。这种转换通常发生在较小的数据类型向较大的数据类型转换时,不会丢失信息的情况下。
int i = 100; long l = i; // 隐式转换
显式转换
显式转换是指程序员手动完成的类型转换。当从较大的数据类型向较小的数据类型转换时,可能会丢失数据,因此需要显式地进行类型转换。
double d = 123.45; int i = (int)d; // 显式转换
总结
理解并熟练掌握 C# 中的数据类型是进行有效编程的基础。本章介绍了 C# 中的基本数据类型、复合数据类型、变量与常量以及类型转换等内容。掌握了这些基础知识后,你将能够更好地理解和使用 C# 编写出更加健壮和高效的代码。