Files
Csharp/C#入门/Lesson8_显示转换/Program.cs
T
2025-09-30 16:49:43 +08:00

177 lines
6.8 KiB
C#
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
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
}
}
}