【从零开始入门unity游戏开发之——C#篇06】变量类型转化和异常捕获

文章目录

一、变量类型转化

1、什么是类型转换

类型转换就是将一种数据类型转换成另一种数据类型。

2、隐式转化

隐式类型转换是指在某些情况下,编译器会自动将一种类型转换为另一种类型。通常,隐式转换发生在没有丢失信息的情况下,例如从 int 转换为 double,因为 double 可以表示更大范围的数值。

相同类型之间的转换

只能大范围装小范围

csharp 复制代码
long l = 1;
int i = 1;
l = i;//隐式转换

不能小范围装大范围

大小比

有符号:long > int > short > sbyte

有符号:ulong > uint > ushort > byte

3、显示转换

显式类型转换(又叫强制类型转换)需要程序员手动指定转换方式。显式转换通常在存在潜在丢失信息的情况下使用,比如将一个较大的类型(double)转换为较小的类型(int)。这种转换如果没有强制执行,编译器会报错。

3.1 括号强转

一般情况下是将高精度的类型强制转换为低精度

语法
csharp 复制代码
变量类型 变量名 = (变量类型)变量
示例

从 double 转换到 int(可能丢失数据)

csharp 复制代码
float f= 9.78f;
int intValue = (int)f;  // 强制转换,会丢失小数部分
Console.WriteLine(intValue);  // 输出 9
注意
  • 可能丢失精度数据,浮点转整数会直接抛弃后面的小数
  • 一定要注意范围,不然可能报错
  • bool和string是不能通过括号强转的

3.2 使用 Parse 和 TryParse 方法

有时我们需要将字符串转换为数值类型,Parse 和 TryParse 是非常有用的两种方法。

  • Parse:如果转换失败,会抛出异常。
  • TryParse:如果转换失败,不会抛出异常,返回 false,适合处理可能的转换错误。
语法
csharp 复制代码
变量类型.Parse("字符串");
变量类型.TryParse("字符串");
示例

使用 int.Parse()

csharp 复制代码
string numberString = "123";

int number = int.Parse(numberString);
Console.WriteLine(number);  // 输出 123

float f = float.Parse(numberString);
Console.WriteLine(f);  // 输出 123

使用 TryParse()

csharp 复制代码
string numberString = "abc";
//尝试转换,失败时不会抛出异常,成功返回True,失败返回false
//number就是转换后的变量,out 关键字先不用管,后面会再介绍
bool result = int.TryParse(numberString, out int number);  

3.3 使用 Convert 类进行转换

更准确的将各个类型之间进行相互转换,它会自动判断如何转换,避免了你手动进行转换操作。

语法
csharp 复制代码
Covert.To目标类型(变量或常量)
示例

其他类型转string类型

csharp 复制代码
string f = Convert.ToString(123);

如果是把字符串转对应类型那字符串一定要合法合规,Int32就是我们前面一直说的int类型

csharp 复制代码
int i = Convert.ToInt32("A");//会报错,因为A不是数字
int i2 = Convert.ToInt32("123");//正确
bool b = Convert.ToBoolean("true");//正确
bool f = Convert.ToBoolean("12.12");//正确

数值转换精度比括号强转会好点, Convert 会四舍五入

csharp 复制代码
float doubleValue = 9.78f;
int intValue = Convert.ToInt32(doubleValue);  
Console.WriteLine(intValue);  // 输出 10

把bool类型也可以转换成数值类型 true对应1 false对应0,反过来就不行

csharp 复制代码
int i1 = Convert.ToInt32(true);// 输出 1
int i2 = Convert.ToInt32(false);// 输出 0

3.4 .ToString()其他类型转string

更方便的转string类型方法

语法
csharp 复制代码
变量.ToString();
示例

其他类型转string类型

csharp 复制代码
string str = 123.ToString();
string str1 = true.ToString();
string str2 = 12.12f.ToString();

当我们进行字符串拼接时就自动会调用ToString转成string

csharp 复制代码
string str3 = 123 + "abc" + true;
Console.WriteLine(str3);

二、异常捕获

通过对异常捕获的学习,可以避免当代码报错时造成程序卡死的情况

1、基本语法结构

csharp 复制代码
try
{
    // 希望进行异常捕获的代码块
    // 这里放置可能会抛出异常的代码
}
catch (Exception e)  // 如果出现异常,捕获并处理
{
    // 通过 e 获取具体的错误信息
    Console.WriteLine("发生异常: " + e.Message);
    // 可以进一步处理异常,比如日志记录、通知等
}
//可选,非必须
finally
{
    // 最终执行的代码,是否发生异常都会执行
    Console.WriteLine("无论是否发生异常,这里的代码都会执行");
}

2、使用

比如前面说的转换代码

csharp 复制代码
int i = Convert.ToInt32("A");//会报错,因为A不是数字
Console.WriteLine(i);
Console.WriteLine("执行通过");

如果我们直接运行,肯定会报错,导致程序运行卡死,自然也打印不出执行通过

如果我们修改代码,加入异常捕获代码,如下

csharp 复制代码
try
{
    int i = Convert.ToInt32("A");//会报错,因为A不是数字
    Console.WriteLine(i);
}
catch (Exception e)
{
    Console.WriteLine("发生异常: " + e.Message);
}
finally
{
    // 最终执行的代码,是否发生异常都会执行
    Console.WriteLine("无论是否发生异常,这里的代码都会执行");
}

Console.WriteLine("执行成功");

结果,程序顺利执行

3、作用

通过使用异常捕获,你可以有效地处理程序中的错误,提供用户友好的错误信息,并保证程序的稳定性和可维护性。可以进一步处理异常,比如日志记录、通知等会很有用。


专栏推荐

地址
【从零开始入门unity游戏开发之------C#篇】
【从零开始入门unity游戏开发之------unity篇】
【制作100个Unity游戏】
【推荐100个unity插件】
【实现100个unity特效】
【unity框架开发】

完结

赠人玫瑰,手有余香!如果文章内容对你有所帮助,请不要吝啬你的点赞评论和关注,你的每一次支持都是我不断创作的最大动力。当然如果你发现了文章中存在错误或者有更好的解决方法,也欢迎评论私信告诉我哦!

好了,我是向宇https://xiangyu.blog.csdn.net

一位在小公司默默奋斗的开发者,闲暇之余,边学习边记录分享,站在巨人的肩膀上,通过学习前辈们的经验总是会给我很多帮助和启发!如果你遇到任何问题,也欢迎你评论私信或者加群找我, 虽然有些问题我也不一定会,但是我会查阅各方资料,争取给出最好的建议,希望可以帮助更多想学编程的人,共勉~

相关推荐
xrgs_shz1 小时前
MATLAB的数据类型和各类数据类型转化示例
开发语言·数据结构·matlab
来恩10034 小时前
C# 类与对象详解
开发语言·c#
komo莫莫da5 小时前
寒假刷题Day19
java·开发语言
ElseWhereR5 小时前
C++ 写一个简单的加减法计算器
开发语言·c++·算法
※DX3906※6 小时前
cpp实战项目—string类的模拟实现
开发语言·c++
wjs20246 小时前
Nginx 安装配置指南
开发语言
美味小鱼6 小时前
实践Rust:编写一个猜数字游戏
开发语言·游戏·rust
Dr.勿忘7 小时前
C#面试常考随笔8:using关键字有哪些用法?
开发语言·unity·面试·c#·游戏引擎
dal118网工任子仪7 小时前
92,[8] 攻防世界 web Web_php_wrong_nginx_config
开发语言·php