目录
前言
1.隐式转换
1.1 知识点
1.2 练习题
2.显式转换
2.1 知识点
2.2 练习题
视频资料来源于bilibili 唐老狮
namespace lesson7_隐式转换
{
class Program
{
static void Main(string[] args)
{
#region 类型转换——隐式转换
//什么是类型转换?
//类型转换 就是不同变量类型之间的相互转换
//隐式转换的基本规则——> 不同类型之间自动转换
//大范围装小范围
#endregion
#region 知识点一 相同大类型之间的转换
//有符号 long int short sbyte
long l = 1;
int i = 1;
short s = 1;
sbyte sb = 1;
//隐式转换 int隐式转换成了long
//可以用大范围 装小范围的 类型 (隐式转换)
l = i;
//不可能够用小范围的类型去装大范围的类型
//i = l;
//无符号 ulong uint ushort byte
ulong ul = 1;
uint ui = 1;
ushort us = 1;
byte b = 1;
ul = ui;
ul = us;
ul = b;
ui = us;
ui = b;
us = b;
//浮点数 decimal double——> float
decimal de = 1.1m;
double d = 1.1;
float f = 1.1f;
//decimal这个类型 没有办法用隐式转换的形式 去存储 double和float
//de = d;
//de = f;
//float 是可以隐式转换成 double
d = f;
//特殊类型 bool char string
//他们之间 不存在隐式转换
#endregion
#region 知识点二 不同大类型之间的转换
#region 无符号和有符号之间
//无符号 不能装负数
ulong ul2 = 1;
uint ui2 = 1;
ushort us2 = 1;
byte b2 = 1;
//无符号装有符号
//有符号的变量 是不能够 隐式转换成 无符号的
// b2=sb2;
//us2=sb2;
//ul2=sb2;
#endregion
#region 无符号装有符号
//有符号的变量 是不能够 隐式转换成 无符号的
// b2=sb2;
//us2=sb2;
//ul2=sb2;
#endregion
#region 有符号装无符号
//有符号的变量 是可以 装 无符号变量的 前提是 范围一定要是涵盖的 存在隐式转换
//i2 = ui2; 因为有符号的变量 可能会超过 这个无符号变量的范围;
//i2 = b2; 因为有符号的变量 不管是多少 都在 无符号变量的范围内
#endregion
#region 浮点数装整数 整数转为浮点数 是存在隐式转换的
//decimal de2 = 1.1m;
//double d2 = 1.1;
//float f2 = 1.1f;
#endregion
#region 浮点数 是可以装载任何类型的 整数的
//f2 = l2;
//f2 = ul2;
#endregion
//decimal 不能隐式存储 float和double 但是他可以隐式的存储整形
//double——> float——> 所有整形(无符号、有符号)
//decimal——> 所有整形(无符号、有符号)
//整数装浮点数 整数是不能隐式存储 浮点数 因为整数不能存储小数
#region 特殊类型和其他类型之间
//bool 没有办法和其他类型 相互隐式转换
//char 没有办法隐式的存储 其他类型的变量
//char类型 可以隐式转换成 整形和浮点型
//char隐式转换成 数据类型是
//对应的数字 其实是一个 ASCII码
//计算机里面存储 2进制
//字符 中文 英文 标点符号 在计算机中都是一个数字
//一个字符 对应一个数字 ACSII码就是一种对应关系
//string 类型 无法和其他类型进行隐式转换
#endregion
#endregion
#region 总结
//高精度(大范围)装低精度(小范围)
//double——> float——> 整数(无符号、有符号)——> char
//decimal——> 整数(无符号、有符号)——> char
//string 和 bool 不参与隐式转换规则的
//什么情况下会出现数据类型的隐式转换?举例说明
#endregion
}
}
}
using System;
namespace lesson7_隐式转换练习题
{
class Program
{
static void Main(string[] args)
{
//将自己名字的每一个字符转换成数字并打印出来
int h = '黄';
Console.WriteLine(h);
int a = '爱';
Console.WriteLine(a);
int l = '玲';
Console.WriteLine(l);
}
}
}
using System;
namespace lesson8_显式转换
{
class Program
{
static void Main(string[] args)
{
#region 知识点一 括号强转
//作用 一般情况下 将高精度的类型强制转换位低精度
//语法:变量类型 变量名 =(变量类型)变量;
//注意:精度问题 范围问题
//相同大类的整形
//有符号整形
sbyte sb = 1;
short s = 1;
int i = 1;
long l = 1;
//强转的时候 可能会出现范围问题 造成的异常
s = (short)i;
Console.WriteLine(s);
//无符号整形
byte b = 1;
ushort us = 1;
uint ui = 1;
ulong ul = 1;
b = (byte)ui;
Console.WriteLine(b);
//无符号和有符号
uint ui2 = 1;
int i2 = 1;
//在强转的时候一定要注意范围 不然得到的结果 可能有异常
ui2 = (uint)i2;
Console.WriteLine(ui2);
i2 = (int)ui2;
//浮点和整形 浮点数 强转成 整形时 会直接抛弃小数点后面的小数
i2 = (int)1.24f;
Console.WriteLine(i2);
//char和数值类型
i2 = 'A';
char c = (char)i2;
Console.WriteLine(c);
//bool和string 是不能通过 括号强转的
bool bo = true;
//int i3 = (bool)bo;
string str = "123";
//i3 = (int)str;
#endregion
#region 知识点二 Parse法
//作用 把字符串类型转换为对应的类型
//语法:变量类型.Parse("字符串");
//注意:字符串必须能够转换成对应类型 否则报错
//有符号
string str2 = "123";
int i4 = int.Parse("123");
Console.WriteLine(i4);
//我们填写字符串 必须是要能够转成对应类型的字符 如果不符合规则 会报错
//i4 = int.Parse("123.45");
//Console.WriteLine(i4);
//值的范围 必须是能够被变量存储的值 否则报错
short s3 = short.Parse("4000");
Console.WriteLine(s3);
sbyte sb3 = sbyte.Parse("1");
Console.WriteLine(s3);
//他们的意思是相同的
Console.WriteLine(sbyte.Parse("1"));
Console.WriteLine(long.Parse("123123"));
//无符号
Console.WriteLine(byte.Parse("1"));
Console.WriteLine(ushort.Parse("1"));
Console.WriteLine(uint.Parse("1"));
Console.WriteLine(ulong.Parse("1"));
//浮点数
float f3 = float.Parse("1.2323");
double d3 = double.Parse("1.2323");
//特殊类型
bool b5 = bool.Parse("true");
Console.WriteLine(b5);
char c2 = char.Parse("A");
Console.WriteLine(c);
#endregion
#region 知识点三 Convert法
//作用 更准确的将 各个类型之间进行相互转换
//语法:Convert.To目标类型(变量或常量)
//注意:填写的变量或常量必须正确 否则出错
//转字符串 如果是把字符串转对应类型 那字符串一定要合法合规
int a = Convert.ToInt32("12");
Console.WriteLine(a);
//精度更准确
//精度比括号强转好一点 会四舍五入
a = Convert.ToInt32(1.23456f);
Console.WriteLine(a);
//特殊类型转换
//把bool类型也可以转成 数值类型 true对应1 false对应0
a = Convert.ToInt32(true);
Console.WriteLine(a);
a = Convert.ToInt32(false);
Console.WriteLine(a);
a = Convert.ToChar("A");
Console.WriteLine(a);
//每一个类型都存在对应的 Convert中的方法
sbyte sb5 = Convert.ToSByte("1");
short s5 = Convert.ToInt16("1");
int i5 = Convert.ToInt32("1");
long l5 = Convert.ToInt64("1");
byte b6 = Convert.ToByte("1");
ushort us6 = Convert.ToUInt16("1");
uint ui6 = Convert.ToUInt32("1");
ulong ul6 = Convert.ToUInt64("1");
float f5 = Convert.ToSingle("12.3");
double d5 = Convert.ToDouble("13.2");
decimal de5 = Convert.ToDecimal("13.2");
bool bo5 = Convert.ToBoolean("true");
char c5 = Convert.ToChar("A");
string str5 = Convert.ToString("123123");
#endregion
#region 知识点四 其他类型转string
//作用 拼接打印
//语法:变量.Tostring();
string str6 = 1.ToString();
str6 = true.ToString();
str6 = "A".ToString();
str6 = 1.2f.ToString();
int aa = 1;
str6 = aa.ToString();
bool bo6 = true;
str6 = bo6.ToString();
//当我们进行字符串拼接时 就会自动调用 Tostring 转成 string
Console.WriteLine("123123" + 1 + true);
str6 = "123123" + 1 + true + 1.23;
#endregion
}
}
}
using System;
namespace lesson8_显式转换练习题
{
class Program
{
static void Main(string[] args)
{
#region 习题1
//请将24069转成字符,并打印
char c = (char)24069;
Console.WriteLine(c);
#endregion
#region 习题2
//提示用户输入姓名,语文,数学,英语成绩,并将输入的成绩用整形变量存储
Console.Write("输入姓名:");
string str = Console.ReadLine();
Console.Write("输入语文:");
str = Console.ReadLine();
int yuwen = int.Parse(str);
Console.WriteLine(yuwen);
Console.Write("输入数学:");
str = Console.ReadLine();
int shuxue = int.Parse(str);
Console.WriteLine(shuxue);
Console.Write("输入英语:");
str = Console.ReadLine();
int ying = int.Parse(str);
Console.WriteLine(ying);
#endregion
}
}
}