当前位置: 首页> 健康> 养生 > 四、C#类型转换

四、C#类型转换

时间:2025/8/27 20:00:48来源:https://blog.csdn.net/m0_61834747/article/details/139761176 浏览次数:0次

在C#中,类型转换是将一个数据类型的值转换为另一个数据类型的过程。

C#中的类型转换可以分为两种:隐式类型转换和显式类型转换(也称为强制类型转换)。

隐式类型转换

隐式转换是不需要编写代码来指定的转换,编译器会自动进行。

隐式转换是将一个较小范围的数据类型转换为较大范围的数据类型时,编译器会自动完成类型转换,这些转换是C#默认的以安全方式进行的转换,不会导致数据丢失。

例如,从int到long,从float到double等。

从小的整数类型转换为大的整数类型,从派生类转换为基类。将一个byte类型的变量赋值给int类型的变量,编译器会自动将byte类型转换为int类型,不需要显示转换。

byte b = 10;
int i = b; // 隐式转换,不需要显式转换int intValue = 42;
long longValue = intValue; // 隐式转换,从 int 到 long

显式转换

显示类型转换,即强制类型转换,需要在代码明确指定。

显式转换是将一个较大范围的数据类型转换为较小范围的数据类型时,或者将一个对象类型转换为另一个对象类型时,需要使用强制类型符号进行显示转换,强制转换会造成数据丢失。

int i = 10;
byte b = (byte)i; // 显式转换,需要使用强制类型转换符号double doubleValue = 3.14;
int intValue = (int)doubleValue; // 强制从 double 到 int,数据可能损失小数部分int intValue = 42;
float floatValue = (float)intValue; // 强制从 int 到 float,数据可能损失精度int intValue = 123;
string stringValue = intValue.ToString(); // 将 int 转换为字符串using System;namespace TypeConversionApplication
{class ExplicitConversion{static void Main(string[] args){double d = 5673.74;int i;// 强制转换 double 为 inti = (int)d;Console.WriteLine(i);Console.ReadKey();}}
}

C#类型转换方法

C# 提供了下列内置的类型转换方法:

序号方法 & 描述
1ToBoolean
如果可能的话,把类型转换为布尔型。
2ToByte
把类型转换为字节类型。
3ToChar
如果可能的话,把类型转换为单个 Unicode 字符类型。
4ToDateTime
把类型(整数或字符串类型)转换为 日期-时间 结构。
5ToDecimal
把浮点型或整数类型转换为十进制类型。
6ToDouble
把类型转换为双精度浮点型。
7ToInt16
把类型转换为 16 位整数类型。
8ToInt32
把类型转换为 32 位整数类型。
9ToInt64
把类型转换为 64 位整数类型。
10ToSbyte
把类型转换为有符号字节类型。
11ToSingle
把类型转换为小浮点数类型。
12ToString
把类型转换为字符串类型。
13ToType
把类型转换为指定类型。
14ToUInt16
把类型转换为 16 位无符号整数类型。
15ToUInt32
把类型转换为 32 位无符号整数类型。
16ToUInt64
把类型转换为 64 位无符号整数类型。

 这些方法都定义在 System.Convert 类中,使用时需要包含 System 命名空间。它们提供了一种安全的方式来执行类型转换,因为它们可以处理 null值,并且会抛出异常,如果转换不可能进行。

 例如,使用 Convert.ToInt32 方法将字符串转换为整数:

string str = "123";
int number = Convert.ToInt32(str); // 转换成功,number为123

 如果字符串不是有效的整数表示,Convert.ToInt32 将抛出 FormatException。

下面的实例把不同值的类型转换为字符串类型:

using System;namespace TypeConversionApplication
{class StringConversion{static void Main(string[] args){// 定义一个整型变量int i = 75;// 定义一个浮点型变量float f = 53.005f;// 定义一个双精度浮点型变量double d = 2345.7652;// 定义一个布尔型变量bool b = true;// 将整型变量转换为字符串并输出Console.WriteLine(i.ToString());// 将浮点型变量转换为字符串并输出Console.WriteLine(f.ToString());// 将双精度浮点型变量转换为字符串并输出Console.WriteLine(d.ToString());// 将布尔型变量转换为字符串并输出Console.WriteLine(b.ToString());// 等待用户按键后关闭控制台窗口Console.ReadKey();}}
}

 

在进行类型转换时需要注意以下几点:

隐式转换只能将较小范围的数据类型转换为较大范围的数据类型,不能将较大范围的数据类型转换为较小范围的数据类型;

显式转换可能会导致数据丢失或精度降低,需要进行数据类型的兼容性检查;

对于对象类型的转换,需要进行类型转换的兼容性检查和类型转换的安全性检查。

类型转换方法

C# 提供了多种类型转换方法,例如使用 Convert 类、Parse 方法和 TryParse 方法,这些方法可以帮助处理不同的数据类型之间的转换。

使用 Convert 类

Convert 类提供了一组静态方法,可以在各种基本数据类型之间进行转换。

string str = "123";
int num = Convert.ToInt32(str);

 使用 Parse 方法

Parse 方法用于将字符串转换为对应的数值类型,如果转换失败会抛出异常。

string str = "123.45";
double d = double.Parse(str);

使用 TryParse 方法

TryParse 方法类似于 Parse,但它不会抛出异常,而是返回一个布尔值指示转换是否成功。

string str = "123.45";
double d;
bool success = double.TryParse(str, out d);if (success) {Console.WriteLine("转换成功: " + d);
} else {Console.WriteLine("转换失败");
}

在 C# 中,内置的类型转换方法主要通过以下几种方式实现:隐式转换、显式转换(强制转换)、使用 Convert 类的方法、Parse 方法和 TryParse 方法,这些方法广泛应用于不同数据类型之间的转换。

以下是 C# 内置类型转换方法的表格:

方法类别方法描述
隐式转换自动进行的转换无需显式指定,通常用于安全的类型转换,如从较小类型到较大类型
显式转换(强制转换)(type)value需要显式指定,通常用于可能导致数据丢失或转换失败的情况
Convert 类方法Convert.ToBoolean(value)将指定类型转换为 Boolean
Convert.ToByte(value)将指定类型转换为 Byte
Convert.ToChar(value)将指定类型转换为 Char
Convert.ToDateTime(value)将指定类型转换为 DateTime
Convert.ToDecimal(value)将指定类型转换为 Decimal
Convert.ToDouble(value)将指定类型转换为 Double
Convert.ToInt16(value)将指定类型转换为 Int16(短整型)
Convert.ToInt32(value)将指定类型转换为 Int32(整型)
Convert.ToInt64(value)将指定类型转换为 Int64(长整型)
Convert.ToSByte(value)将指定类型转换为 SByte
Convert.ToSingle(value)将指定类型转换为 Single(单精度浮点型)
Convert.ToString(value)将指定类型转换为 String
Convert.ToUInt16(value)将指定类型转换为 UInt16(无符号短整型)
Convert.ToUInt32(value)将指定类型转换为 UInt32(无符号整型)
Convert.ToUInt64(value)将指定类型转换为 UInt64(无符号长整型)
Parse 方法Boolean.Parse(string)将字符串解析为 Boolean
Byte.Parse(string)将字符串解析为 Byte
Char.Parse(string)将字符串解析为 Char
DateTime.Parse(string)将字符串解析为 DateTime
Decimal.Parse(string)将字符串解析为 Decimal
Double.Parse(string)将字符串解析为 Double
Int16.Parse(string)将字符串解析为 Int16
Int32.Parse(string)将字符串解析为 Int32
Int64.Parse(string)将字符串解析为 Int64
SByte.Parse(string)将字符串解析为 SByte
Single.Parse(string)将字符串解析为 Single
UInt16.Parse(string)将字符串解析为 UInt16
UInt32.Parse(string)将字符串解析为 UInt32
UInt64.Parse(string)将字符串解析为 UInt64
TryParse 方法Boolean.TryParse(string, out bool)尝试将字符串解析为 Boolean,返回布尔值表示是否成功
Byte.TryParse(string, out byte)尝试将字符串解析为 Byte,返回布尔值表示是否成功
Char.TryParse(string, out char)尝试将字符串解析为 Char,返回布尔值表示是否成功
DateTime.TryParse(string, out DateTime)尝试将字符串解析为 DateTime,返回布尔值表示是否成功
Decimal.TryParse(string, out decimal)尝试将字符串解析为 Decimal,返回布尔值表示是否成功
Double.TryParse(string, out double)尝试将字符串解析为 Double,返回布尔值表示是否成功
Int16.TryParse(string, out short)尝试将字符串解析为 Int16,返回布尔值表示是否成功
Int32.TryParse(string, out int)尝试将字符串解析为 Int32,返回布尔值表示是否成功
Int64.TryParse(string, out long)尝试将字符串解析为 Int64,返回布尔值表示是否成功
SByte.TryParse(string, out sbyte)尝试将字符串解析为 SByte,返回布尔值表示是否成功
Single.TryParse(string, out float)尝试将字符串解析为 Single,返回布尔值表示是否成功
UInt16.TryParse(string, out ushort)尝试将字符串解析为 UInt16,返回布尔值表示是否成功
UInt32.TryParse(string, out uint)尝试将字符串解析为 UInt32,返回布尔值表示是否成功
UInt64.TryParse(string, out ulong)尝试将字符串解析为 UInt64,返回布尔值表示是否成功
关键字:四、C#类型转换

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

责任编辑: