177 lines
6.8 KiB
C#
177 lines
6.8 KiB
C#
|
|
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转换为int,true为1,false为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
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
}
|