2022.01.29 / Microsoft Visual Studio 2022 / C#
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace _01._06_类型转换
{
internal class Program
{
static void Main(string[] args)
{
// (一)、自动类型转换
// 例1:( int ---> double 类型兼容 )
int a = 6; // 声明一个 int类型 的 变量a
double b = a; // 将 int类型 的 变量a 赋值给 double类型 的 变量b
Console.WriteLine(b);
// 理解:
// 1、由于 int类型 和 double类型 均为 值类型 ,相互兼容,因此可以转换。
// 2、由于 double类型 的范围 比 int类型 的范围 更大,因此可以 自动 转换。
// 3、转换过程没有任何提示,所以被称为“自动”,也称为“隐式类型转换”。
// (二)、强制类型转换
// 语法:
// (目标类型)待转换的值或变量
// 例2:( double ---> int 类型兼容 )
double c = 3.1415926; // 声明一个 double类型 的 变量c
int d = (int)c; // 将 double类型 的 变量c 强制 转换成 int类型,并赋值给 int类型 的 变量d
Console.WriteLine(d);
// 理解:
// 1、由于 int类型 和 double类型 均为 值类型 ,相互兼容,因此可以转换。
// 2、由于 int类型 的范围 比 double 类型 的范围 更小,因此 不能 自动 转换,必须执行 强制 转换。
// 3、转换须由特定代码执行,过程可感知,所以被称为“强制”。也称为“显式类型转换”。
// (三)、Convert转换
// 语法:
// Convert.To目标类型(待转换的值或变量);
// 例3:( int <===> string 或 double <===> string 类型不兼容 )
int num_1 = 7; // 声明一个 int类型 的 变量num_1
string str_1 = Convert.ToString(num_1); // 将 int类型 的 变量num_1 赋值给 string类型 的 变量str_1
Console.WriteLine(str_1);
double num_2 = 2.718281828459045; // 声明一个 double类型 的 变量num_2
string str_2 = Convert.ToString(num_2); // 将 double类型 的 变量num_2 赋值给 string类型 的 变量str_2
Console.WriteLine(str_2);
string str_3 = "9527"; // 声明一个 string类型 的 变量str_3
int num_3=Convert.ToInt32(str_3); // 将 string类型 的 变量str_3 赋值给 int类型 的 变量num_3
Console.WriteLine(num_3);
// 错例:
// string str_4 = "abc"; // 声明一个 string类型 的 变量num_2,值为“abc”
// int num_4 = Convert.ToInt32(str_4); // “abc” 无法 通过Convert命令 转换成 int类型,程序会报错
// Console.WriteLine(num_4);
// 关于Convert.ToInt16() / Convert.ToInt32() / Convert.ToInt64()
// Convert.ToInt16()能转换的数值范围为 -32768 ~ +32767
// Convert.ToInt32()能转换的数值范围为 -2147483648 ~ +2147483647
// Convert.ToInt64()能转换的数值范围为 -好大好大一个数 ~ +好大好大一个数
// 所以,根据实际要转换的数值来选择就行了。
// 一般选32吧,因为16在取值前可能没超出范围,但在经过一系列计算后有可能就超出范围了。
// 人生的乐趣,就在于不停地左右横跳。。。
}
}
}