第七式:C# 类型转换 (移花接木)

绝世
秘籍
冲儿,有时候你需要把一种内力转化为另一种。比如把刚猛的少林长拳(int)化为阴柔的绵掌(double)。
这在江湖上称为类型转换 (Type Conversion)
这不就是吸星大法吗?把别人的内力吸过来变成自己的!

1. 隐式转换 (Implicit) - 水到渠成

当从小容器倒入大容器时,不会有任何损失,编译器会自动帮你完成。这叫安全转换

口诀:小变大,自动挂。


int smallCup = 10;
long bigBucket = smallCup; // 自动把 int 转为 long,毫无压力
        

2. 显式转换 (Explicit) - 霸王硬上弓

当要把大容器的水倒入小杯子时,可能会溢出(数据丢失)。编译器不敢自作主张,必须你强制下令。

口诀:大变小,强制搞。


double preciseValue = 3.14159;
int roughValue = (int)preciseValue; // 强制转换!小数部分 .14159 会被无情砍掉
// 结果 roughValue 变成了 3
        

3. 转换方法 (Convert) - 易容术

有时候,数据类型完全不同(比如把字符串 "123" 变成数字 123),这时候光靠强转是不行的,得用工具。


using System;

namespace TypeConversion
{
    class Program
    {
        static void Main(string[] args)
        {
            // 1. 隐式转换
            int myInt = 10;
            double myDouble = myInt; // 自动变成 10.0
            Console.WriteLine(myDouble);

            // 2. 显式转换 (强制)
            double myMoney = 99.99;
            int myCash = (int)myMoney; // 变成了 99,亏了 0.99
            Console.WriteLine(myCash);

            // 3. 字符串转换
            string strEnergy = "100";
            int energy = int.Parse(strEnergy); // 字符串变成了数字
            Console.WriteLine("当前内力:" + (energy + 50)); // 输出 150
        }
    }
}
        
小心!如果你试图把 "令狐冲" 转换成数字,程序会直接走火入魔 (Exception)
FormatException 会教你做人!
所以,高手通常会用 int.TryParse(),这招比较稳,失败了也不会报错,只会返回 false。
🔄

动手时刻:乾坤大挪移

编写一个程序:

  1. 定义一个字符串 string s = "500";
  2. 把它转换成整数。
  3. 再把它强制转换成 byte 类型(注意 byte 最大只能存 255)。
  4. 看看会发生什么奇迹(或者灾难)?
查看结果

string s = "500";
int i = int.Parse(s);
byte b = (byte)i; // 灾难发生了!
Console.WriteLine(b); 
                    

结果: 输出可能是 244(因为 500 溢出了,发生了数据截断)。这叫溢出攻击


成就解锁:【移花接木】 获得:转换大师勋章