强制类型转换方法
自动转换条件
- 两种类型必须是值类型(整型和浮点类型)。
- 目标类型必须大于要转换的类型,例如double大于int。
- 这个过程是程序运行中,编译器自动完成的,我们无需干预。
基本类型的转换
static void test()
{
double a = 100.5;
int b = 12;
//double res = a + b;
//Console.WriteLine($"转换后的结果{res}");
int res = (int)a + b; //这种语法的转换,一般是值类型之间可以用,会丢失精度。
Console.WriteLine($"转换后的结果{res}");
Console.WriteLine("---------------------------");
//对于Object类型的强制转换。object是引用类型(非数值)
object val = 120.5;
int valB = 8;
int result = (int)(double)val + b;
Console.WriteLine($"{result}");
}
Parse方法的类型转换
static void ttVal()
{
//由字符串---->数值
//只有"有效的"字符类型,才能转换成对应的值类型。有效的:也就是说字符串内容必须符合目标类型。
double a = double.Parse("200.5");
float b = float.Parse("20.36");
int c = int.Parse("500");
//int d = int.Parse("20.56"); //这种方式会出错,因为"20.56"不是int的有效表示开式。
int d = (int)double.Parse("20.56"); //必须先中转一下。
double e = double.Parse("300"); //这种可以,因为"300"是小(int)转大(double)的形式。
Console.WriteLine($"{a}, {b},{c}");
//总结方法: 目标类型 变量=目标类型.Parse("字符串的有效表示")
//由数值 -----> 字符串
string s1 = a.ToString();
string s2 = b.ToString();
Console.WriteLine($"{s1};{s2}");
}
强制类型转换适合各种类型之间的转换
static void ttval2()
{
//强制类型转换,万能转换Convert
double a = Convert.ToDouble("125.25");
float b = Convert.ToSingle("20.36");
int c = Convert.ToInt32("252");
DateTime dt = Convert.ToDateTime("2022-10-1");
int d = Convert.ToInt32(a);
c = (int)Convert.ToDouble("500.5");
//注:同样要求,字符串或者要转换的类型,必须是目标类型 的有效表示形式。
}