C# 中的 decimal 泛型与类型转换详解

需积分: 11 0 下载量 71 浏览量 更新于2024-08-16 收藏 858KB PPT 举报
"C#编程中的decimal类型、泛型、类型转换和控制流" 在C#编程中,`decimal`类型是一种特殊的数据类型,用于处理高精度的财务和货币计算。它是一个128位(8个字节)的数值类型,提供比浮点类型(如`float`和`double`)更高的精度,但范围较小。在定义`decimal`类型的数值时,必须使用后缀`m`或`M`,如`300.5m`。与`float`和`double`不同,`decimal`和浮点类型之间没有隐式转换,需要显式进行类型转换,如`decimal myMoney = 99.9m; double x = (double)myMoney;`。 泛型在C#中是另一种重要的概念,它允许创建可重用的类型,这些类型可以处理多种数据类型。泛型可以应用于类、接口、方法和委托,提供了一种方式来限制可存储或操作的数据类型,同时保持类型安全。例如,你可以创建一个泛型列表`List<T>`,其中`T`代表一个未知的类型,可以在实例化时指定,如`List<int> numbers = new List<int>();`。 类型转换在C#中分为隐式和显式转换。隐式转换是系统自动进行的,当源数据类型兼容且不会丢失信息时。而显式转换需要程序员明确指定,如`int num = (int)doubleValue;`,在可能丢失信息或数据类型不兼容时使用。 在C#的控制流语句中,`switch`语句常用于基于不同条件执行不同代码块。需要注意的是,C#的`switch`语句在遇到`break`时会退出,不同于Java,C#不包含`break`可能会导致代码块意外执行。例如,`for`循环中的`continue`语句用于跳过当前迭代的剩余部分,而`break`则用于完全退出循环。 在字符串和数值的混合操作中,`+`运算符在遇到字符串时会转换为字符串连接操作。例如,`inta=20;stringb="10"; Console.WriteLine(a+b);`将输出`2010`,因为`a`被隐式转换为字符串并与`b`连接。而如果两者都是数值,`+`则执行加法操作,如`inta=20;intb=10; Console.WriteLine(a+b);`输出`30`。 在使用`foreach`循环时,它可以遍历数组、集合或枚举。对于字符串,`foreach`可以遍历每个字符,如`foreach(char st in str)`,而对于字符串数组,`foreach`将遍历每个字符串元素,如`foreach(string st in strArray)`。 理解和掌握C#中的`decimal`类型、泛型以及类型转换和控制流的基本规则是编写高质量C#代码的关键。在编程实践中,了解这些知识点可以帮助避免常见的错误并提高代码的可读性和效率。