Files
Csharp/C#入门/Lesson8_显示转换/Program.cs
T

177 lines
6.8 KiB
C#
Raw Normal View History

2025-09-30 16:46:01 +08:00
using System;
namespace Lesson8
{
class program
{
static void Main(string[] args)
{
Console.WriteLine("显式转换");
// 显式转换=手动处理 强制转换
#region 知识点一 括号强转
//作用:一般情况下,将高精度类型转换为低精度类型
//语法:变量类型 变量名 = (目标类型)变量名;
//注意:类型不兼容 精度问题 范围问题
//相同大类的整形
//有符号整形
sbyte sb = 1;
short s = 1;
int i = 40000;
long l = 1;
//s = i; //错误:类型不兼容
i = (int)l; //正确:手动转换
Console.WriteLine(i);
s = (short)i;//正确但注意:超过了short的范围
Console.WriteLine(s);
//无符号整形
byte b = 1;
ushort us = 1;
uint ui = 1;
ulong ul = 1;
ui = (uint)ul; //正确:手动转换
Console.WriteLine(ui);
//浮点数
float f = 1.0f;
double d = 1.123456789012345;
f = (float)d; //正确:手动转换
Console.WriteLine(f);//注意:精度损失
//无符号和有符号之间的转换
uint ui2 = 1;
int i2 = 1;
//ui2 = i2; //错误:类型不兼容
ui2 = (uint)i2; //正确:手动转换
Console.WriteLine(ui2);
i2 = -1; //负数
ui2 = (uint)i2;
Console.WriteLine(ui2); //注意:负数转换为无符号整形时,结果是一个很大的数
//浮点数和整形之间的转换,会直接截断小数部分
i2 = (int)1.2f;
Console.WriteLine(i2); //注意:小数部分被截断
//char和数值类型
char c = 'A'; //字符'A'的ASCII码是65
Console.WriteLine(c);
int asciiValue = (int)c; //将字符转换为ASCII码
Console.WriteLine(asciiValue);
//bool和string之间的转换,不能通过括号强转
bool bo = true;
//int i3 = (bool)bo; 错误:bool不能直接转换为int
string str = "123";
//i3 = int(str); 错误:string不能直接转换为int
#endregion
#region 知识点二 Parse方法
//作用:将字符串转换为其他类型
//语法:目标类型. Parse(字符串变量名);
//注意:如果字符串格式不正确,会抛出异常,必须是能够转换的类型
//有符号
string str2 = "123";
int i3 = int.Parse(str2); //正确:字符串转换为整数
Console.WriteLine(i3);
//i3 = int.Parse("fds"); 错误:字符串格式不正确,不是能够转换的类型,会抛出异常
//Console.WriteLine(i3);
short s3 = short.Parse("4");//正确:字符串转换为短整数
Console.WriteLine(s3);
//s3 = short.Parse("40000"); 错误:字符串格式不正确,超出了short的范围,会抛出异常
//Console.WriteLine(s3);
//无符号
//规则相同
Console.WriteLine(byte.Parse("1"));
Console.WriteLine(ushort.Parse("2"));
Console.WriteLine(uint.Parse("3"));
Console.WriteLine(ulong.Parse("4"));
//浮点数
double f3 = double.Parse("1.23456789"); //正确:字符串转换为双精度浮点数
Console.WriteLine(f3);
float f4 = float.Parse("1.23456789"); //正确:字符串转换为单精度浮点数
Console.WriteLine(f4);
//特殊类型
bool bo2 = bool.Parse("true"); //正确:字符串转换为布尔值
Console.WriteLine(bo2);
//char c3 = char.Parse(bo2); 错误:bool不能直接转换为char
//string str3 = string.Parse(bo2); 错误:bool不能直接转换为string
char c2 = char.Parse("A"); //正确:字符串转换为字符
Console.WriteLine(c2);
#endregion
#region 知识点三 Convert方法
//作用:更准确的将不同类型之间进行转换,支持更多类型的转换
//语法:Convert.To目标类型(变量名);
//注意:如果转换失败,会返回默认值,不会抛出异常
//转换字符串
int a = Convert.ToInt32("123"); //正确:字符串转换为整数
Console.WriteLine(a);
//a = Convert.ToInt32("fds"); 错误:字符串格式不正确,不是能够转换的类型,会抛出异常
a = Convert.ToInt32('A'); //正确:字符'A'的ASCII码是65
Console.WriteLine(a);
//精度更准确
a = Convert.ToInt32(1.5f); //正确:数字转换为int,会四舍五入
Console.WriteLine(a);
//特殊类型转换
a = Convert.ToInt32(true); //正确:bool转换为inttrue为1false为0
Console.WriteLine(a);
//每一个类型都有对应的Convert方法
short s4 = Convert.ToInt16("123"); //正确:字符串转换为短整数
uint ui3 = Convert.ToUInt32("123"); //正确:字符串转换为无符号整数
long s5 = Convert.ToInt64("123456789"); //正确:字符串转换为长整数
sbyte sb5 = Convert.ToSByte("123"); //正确:字符串转换为有符号字节
float f5 = Convert.ToSingle("1.23456789"); //正确:字符串转换为单精度浮点数
double d5 = Convert.ToDouble("1.23456789"); //正确:字符串转换为双精度浮点数
decimal dec = Convert.ToDecimal("1.23456789"); //正确:字符串转换为十进制数
bool bo3 = Convert.ToBoolean("true"); //正确:字符串转换为布尔值
#endregion
#region 知识点四 其他类型转string
//作用:将其他类型转换为字符串,拼接打印
//语法:变量名.ToString();
string str6 = 1.ToString();
Console.WriteLine(str6);
str6 = true.ToString();
Console.WriteLine(str6);
str6 = 1.23456789f.ToString();
Console.WriteLine(str6);
str6 = 'A'.ToString();
Console.WriteLine(str6);
//拼接
Console.WriteLine("拼接后的字符串"+1+true);//1和true会被转换为字符串,结果是"1True"
//eg:
str6 = "123" + 1 + true + 1.254;//默认调用了ToString()方法
Console.WriteLine(str6);
#endregion
}
}
}