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

news/2024/12/19 3:58:49/

文章目录

  • 一、变量类型转化
    • 1、什么是类型转换
    • 2、隐式转化
      • 相同类型之间的转换
    • 3、显示转换
      • 3.1 括号强转
        • 语法
        • 示例
        • 注意
      • 3.2 使用 Parse 和 TryParse 方法
        • 语法
        • 示例
      • 3.3 使用 Convert 类进行转换
        • 语法
        • 示例
      • 3.4 .ToString()其他类型转string
        • 语法
        • 示例
  • 二、异常捕获
    • 1、基本语法结构
    • 2、使用
    • 3、作用
  • 专栏推荐
  • 完结

一、变量类型转化

1、什么是类型转换

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

2、隐式转化

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

相同类型之间的转换

只能大范围装小范围

long l = 1;
int i = 1;
l = i;//隐式转换

不能小范围装大范围
在这里插入图片描述
大小比
有符号:long > int > short > sbyte
有符号:ulong > uint > ushort > byte

3、显示转换

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

3.1 括号强转

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

语法
变量类型 变量名 = (变量类型)变量
示例

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

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

3.2 使用 Parse 和 TryParse 方法

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

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

使用 int.Parse()

string numberString = "123";int number = int.Parse(numberString);
Console.WriteLine(number);  // 输出 123float f = float.Parse(numberString);
Console.WriteLine(f);  // 输出 123

使用 TryParse()

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

3.3 使用 Convert 类进行转换

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

语法
Covert.To目标类型(变量或常量)
示例

其他类型转string类型

string f = Convert.ToString(123);

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

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

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

float doubleValue = 9.78f;
int intValue = Convert.ToInt32(doubleValue);  
Console.WriteLine(intValue);  // 输出 10

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

int i1 = Convert.ToInt32(true);// 输出 1
int i2 = Convert.ToInt32(false);// 输出 0

3.4 .ToString()其他类型转string

更方便的转string类型方法

语法
变量.ToString();
示例

其他类型转string类型

string str = 123.ToString();
string str1 = true.ToString();
string str2 = 12.12f.ToString();

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

string str3 = 123 + "abc" + true;
Console.WriteLine(str3);

二、异常捕获

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

1、基本语法结构

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

2、使用

比如前面说的转换代码

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

如果我们直接运行,肯定会报错,导致程序运行卡死,自然也打印不出执行通过
在这里插入图片描述
如果我们修改代码,加入异常捕获代码,如下

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

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


http://www.ppmy.cn/news/1556290.html

相关文章

实景视频与模型叠加融合?

[视频GIS系列]无人机视频与与实景模型进行实时融合_无人机视频融合-CSDN博客文章浏览阅读1.5k次,点赞28次,收藏14次。将无人机视频与实景模型进行实时融合是一个涉及多个技术领域的复杂过程,主要包括无人机视频采集、实景模型构建、视频与模型…

Opencv之图像梯度处理和绘制图像轮廓

一、梯度处理的sobel算子函数 处理示意 Sobel 算子是一种常用的图像边缘检测方法,结合了一阶导数和高斯平滑,用于检测图像的梯度信息。 1、功能 Sobel 算子用于计算图像在 x 和 y 方向的梯度,主要功能包括: 强调图像中灰度值的…

【鸿睿创智开发板试用】在OpenHarmony 4.1环境下移植OpenCV示例

目录 引言 修改工程环境 配置OpenCV库和头文件 修改代码 CMakeList.txt文件 qrcodeInfo.decodes is possibly undefined. warning: backslash and newline separated by space [-Wbackslash-newline-escape] 运行 结语 引言 在前面的博文(【鸿睿创智开发板…

前端学习-Web API基本认知(二十)

目录 前言 变量声明 变量声明有三个 var let 和 const我们应该用那个呢? 简单来说以后声明变量我们优先使用哪个? Web API基本认知 作用和分类 作用 分类 什么是DOM DOM树 DOM树是什么 DOM对象 DOM对象 DOM的核心思想 总结 前言 第二更(量较少&…

Apache HTTP 服务器深度性能优化

引言 在前几篇文章中,我们讨论了基础和高级性能优化策略。现在,我们将深入探讨一些具体的优化实践,帮助您实现更精细的控制,并确保Apache服务器在各种复杂环境中都能保持最佳性能。 1. 细粒度的Apache配置调整 1.1 MPM参数微调…

RabbitMQ消息队列的笔记

Rabbit与Java相结合 引入依赖 <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-amqp</artifactId> </dependency> 在配置文件中编写关于rabbitmq的配置 rabbitmq:host: 192.168.190.132 /…

tomcat 架构详解

Tomcat是一个开源的Java Servlet容器&#xff0c;用于部署Java Web应用程序。它实现了Java Servlet和JavaServer Pages&#xff08;JSP&#xff09;技术规范&#xff0c;提供了Web请求处理和动态页面生成的能力。以下是对Tomcat架构的详细解析&#xff1a; Tomcat的核心组件 …

Java从入门到工作2 - IDEA

2.1、项目启动 从git获取到项目代码后&#xff0c;用idea打开。 安装依赖完成Marven/JDK等配置检查数据库配置启动相关服务 安装依赖 如果个别依赖从私服下载不了&#xff0c;可以去maven官网下载补充。 如果run时提示程序包xx不存在&#xff0c;在项目目录右键Marven->Re…