深入理解 C# 编程:枚举、文件处理、异常处理和数字相加

C# 枚举

枚举是一个特殊的“类”,表示一组常量(不可更改/只读变量)。

要创建枚举,请使用 enum 关键字(而不是 classinterface),并用逗号分隔枚举项:

enum Level 
{Low,Medium,High
}

您可以使用点语法访问枚举项:

Level myVar = Level.Medium;
Console.WriteLine(myVar);

Enum 是 “enumerations” 的缩写,意思是“特定列举”。

在类内部定义枚举也是可行的:

class Program
{enum Level{Low,Medium,High}static void Main(string[] args){Level myVar = Level.Medium;Console.WriteLine(myVar);}
}

输出将为:

Medium

枚举值

默认情况下,枚举的第一项的值为 0。第二项的值为 1,依此类推。

要从项中获取整数值,必须显式将项转换为 int

enum Months
{January,    // 0February,   // 1March,      // 2April,      // 3May,        // 4June,       // 5July        // 6
}static void Main(string[] args)
{int myNum = (int) Months.April;Console.WriteLine(myNum);
}

输出将为:

3

您还可以分配自己的枚举值,接下来的项将相应地更新它们的数字:

enum Months
{January,    // 0February,   // 1March=6,    // 6April,      // 7May,        // 8June,       // 9July        // 10
}static void Main(string[] args)
{int myNum = (int) Months.April;Console.WriteLine(myNum);
}

输出将为:

7

在 Switch 语句中使用枚举

枚举通常在 switch 语句中用于检查相应的值:

enum Level 
{Low,Medium,High
}static void Main(string[] args) 
{Level myVar = Level.Medium;switch(myVar) {case Level.Low:Console.WriteLine("低级别");break;case Level.Medium:Console.WriteLine("中级别");break;case Level.High:Console.WriteLine("高级别");break;}
}

输出将为:

中级别

何时以及为什么使用枚举?

在有些情况下,当您知道值不会更改时,例如月份、日期、颜色、扑克牌等时,请使用枚举。

C# 文件

处理文件

System.IO 命名空间中的 File 类允许我们处理文件:

using System.IO;  // 包含 System.IO 命名空间File.SomeFileMethod();  // 使用带有方法的 File 类

File 类具有许多有用的方法,用于创建文件和获取有关文件的信息。例如:

方法描述
AppendText()在现有文件的末尾追加文本
Copy()复制文件
Create()创建或覆盖文件
Delete()删除文件
Exists()测试文件是否存在
ReadAllText()读取文件的内容
Replace()用另一个文件的内容替换文件的内容
WriteAllText()创建新文件并将内容写入其中。如果文件已存在,将覆盖它。

有关 File 方法的完整列表,请参阅 Microsoft .Net File Class 参考文档.

写入文件并读取它

在以下示例中,我们使用 WriteAllText() 方法创建一个名为 “filename.txt” 的文件,并向其中写入一些内容。然后,我们使用 ReadAllText() 方法读取文件的内容:

using System.IO;  // 包含 System.IO 命名空间string writeText = "Hello World!";  // 创建一个文本字符串
File.WriteAllText("filename.txt", writeText);  // 创建文件并将 writeText 的内容写入其中string readText = File.ReadAllText("filename.txt");  // 读取文件的内容
Console.WriteLine(readText);  // 输出内容

输出将为:

Hello World!

C# 异常

在执行 C# 代码时,可能会发生不同类型的错误:由程序员制造的编码错误,由于错误的输入或其他不可预见的事物而导致的错误。

当发生错误时,C# 通常会停止执行并生成错误消息。这种情况的技术术语是:C# 会引发异常(抛出错误)。

C# try 和 catch

try 语句允许您定义一块在执行过程中测试错误的代码块。

catch 语句允许您定义一块在 try 块中发生错误时执行的代码块。

trycatch 关键字是成对出现的:

try 
{// 试图执行的代码块
}
catch (Exception e)
{// 处理错误的代码块
}

考虑以下示例,我们在其中创建一个包含三个整数的数组:

这将生成一个错误,因为 myNumbers[10] 不存在。

int[] myNumbers = {1, 2, 3};
Console.WriteLine(myNumbers[10]); // error!

错误消息将类似于:

System.IndexOutOfRangeException: 'Index was outside the bounds of the array.'

如果发生错误,我们可以使用 try...catch 来捕获错误并执行一些代码来处理它。

在以下示例中,我们在 catch 块中使用变量(e)以及内置的 Message 属性,该属性输出描述异常的消息:

try
{int[] myNumbers = {1, 2, 3};Console.WriteLine(myNumbers[10]);
}
catch (Exception e)
{Console.WriteLine(e.Message);
}

输出将为:

Index was outside the bounds of the array.

您还可以输出自己的错误消息:

try
{int[] myNumbers = {1, 2, 3};Console.WriteLine(myNumbers[10]);
}
catch (Exception e)
{Console.WriteLine("Something went wrong.");
}

输出将为:

Something went wrong.

finally 块

finally 语句允许您在 try...catch 之后执行代码,无论结果如何:

try
{int[] myNumbers = {1, 2, 3};Console.WriteLine(myNumbers[10]);
}
catch (Exception e)
{Console.WriteLine("Something went wrong.");
}
finally
{Console.WriteLine("The 'try catch' is finished.");
}

输出将为:

Something went wrong.
The 'try catch' is finished.

throw 关键字

throw 语句允许您创建自定义错误。

throw 语句与异常类一起使用。在 C# 中有许多异常类可用:ArithmeticExceptionFileNotFoundExceptionIndexOutOfRangeExceptionTimeOutException 等:

static void checkAge(int age)
{if (age < 18){throw new ArithmeticException("Access denied - You must be at least 18 years old.");}else{Console.WriteLine("Access granted - You are old enough!");}
}static void Main(string[] args)
{checkAge(15);
}

程序中显示的错误消息将为:

System.ArithmeticException: 'Access denied - You must be at least 18 years old.'

如果 age 为 20,则不会引发异常:

checkAge(20);

输出将为:

Access granted - You are old enough!

C# 如何相加两个数字

学习如何在 C# 中相加两个数字:

// 示例
int x = 5;
int y = 6;
int sum = x + y;
Console.WriteLine(sum); // 打印 x + y 的和

最后

为了方便其他设备和平台的小伙伴观看往期文章:

微信公众号搜索:Let us Coding,关注后即可获取最新文章推送

看完如果觉得有帮助,欢迎 点赞、收藏、关注

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/654537.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

机器学习系列 16:使用 scikit-learn 的 Pipeline

在机器学习项目中&#xff0c;我们经常需要进行大量的数据预处理步骤&#xff0c;最后用处理干净的数据集来拟合机器学习算法得到一个合适的机器学习模型。 scikit-learn 提供了一个强大的 Pipeline 类来帮助我们将所有的数据预处理步骤和训练模型的步骤串起来。就像流水线一样…

数据目录驱动测试——深入探讨Pytest插件 pytest-datadir

在软件测试中,有效管理测试数据对于编写全面的测试用例至关重要。Pytest插件 pytest-datadir 提供了一种优雅的解决方案,使得数据目录驱动测试变得更加简单而灵活。本文将深入介绍 pytest-datadir 插件的基本用法和实际案例,助你更好地组织和利用测试数据。 什么是pytest-da…

Spring 注解详情

目录 存储 Bean 对象 Spring 注入 Bean 作用域 Bean 的初始化和销毁 Spring AOP Spring MVC MyBatis 存储 Bean 对象 具体细节可以跳转 spring 注解&#xff1a; 更加简单的存储 Bean-CSDN博客 Controller&#xff1a;控制器存储【效验参数的合法性&#xff08;安检系…

重写Sylar基于协程的服务器(0、搭建开发环境以及项目框架 || 下载编译简化版Sylar)

重写Sylar基于协程的服务器&#xff08;0、搭建开发环境以及项目框架 || 下载编译简化版Sylar&#xff09; 重写Sylar基于协程的服务器系列&#xff1a; 重写Sylar基于协程的服务器&#xff08;0、搭建开发环境以及项目框架 || 下载编译简化版Sylar&#xff09; 前言 sylar是…

搜索<2>——记忆化搜索与剪枝

Part 1:记忆化搜索 记忆化搜索其实就是拿个数组记录下已经得到的值&#xff0c;这样再遇到的时候直接调用即可。 P1464: 虽然此题好像不用记忆化也行&#xff0c;但我们还是老老实实写个记忆化吧。没什么困难的地方&#xff0c;就是它叫你怎么干你就怎么干&#xff0c;记得开…

PDA移动终端怎样解决货物管理混乱问题

在现代物流仓储行业中&#xff0c;货物管理混乱、信息不准确是一个普遍存在的问题。为了解决这一难题&#xff0c;PDA移动终端应运而生&#xff0c;通过其强大的数据采集功能、丰富传输功能、丰富联网方式和高防护性能等&#xff0c;为物流仓储企业提供了一种全新的解决方案。 …

jenkins pipeline配置maven可选参数

1、在Manage Jenkins下的Global Tool Configuration下对应的maven项添加我们要用得到的不同版本的maven安装项 2、pipeline文件内容具体如下 我们maven是单一的&#xff0c;所以我们都是配置单选参数 pipeline {agent anyparameters {gitParameter(name: BRANCH_TAG, type: …

【笔试常见编程题03】统计回文、连续最大和、不要二、把字符串转换成整数

1. 统计回文 “回文串”是一个正读和反读都一样的字符串&#xff0c;比如“level”或者“noon”等等就是回文串。花花非常喜欢这种拥有对称美的回文串&#xff0c;生日的时候她得到两个礼物分别是字符串A和字符串B。现在她非常好奇有没有办法将字符串B插入字符串A使产生的字符串…

Mysql运维篇(三) MySQL备份与恢复

一路走来&#xff0c;所有遇到的人&#xff0c;帮助过我的、伤害过我的都是朋友&#xff0c;没有一个是敌人。如有侵权&#xff0c;请留言&#xff0c;我及时删除&#xff01; 一、物理备份与逻辑备份 1、物理备份&#xff1a;备份数据文件&#xff0c;转储数据库物理文件到某…

Web 开发 9:Django 框架基础

在本篇文章中&#xff0c;我们将深入探讨 Django 框架的基础知识。Django 是一个功能强大且流行的 Python Web 框架&#xff0c;它提供了一套完整的工具和功能&#xff0c;用于开发高效、可扩展的 Web 应用程序。 什么是 Django&#xff1f; Django 是一个基于 Python 的免费…

【qt】switchBtn

方法1 在qtdesigner中设置按钮图标的三个属性&#xff0c;normal off 、normal on和checkabletrue。 from PyQt5.QtWidgets import * from PyQt5.QtGui import * from PyQt5.QtCore import * from PyQt5 import uic from switchBtn import Ui_Dialogclass Test(QDialog, Ui_…

Python判断语句——if语句的基本格式

一、引言 在Python编程语言中&#xff0c;if语句是一种基本的控制流语句&#xff0c;用于根据特定条件执行不同的代码块。它的基本格式相对简单&#xff0c;使得Python代码清晰、易于阅读。下面&#xff0c;我们将深入探讨if语句的基本格式、用法和注意事项。 二、if语句的…

React16源码: React中处理LegacyContext相关的源码实现

LegacyContext 老的 contextAPI 也就是我们使用 childContextTypes 这种声明方式来从父节点为它的子树提供 context 内容的这么一种方式遗留的contextAPI 在 react 17 被彻底移除了&#xff0c;就无法使用了那么为什么要彻底移除这个contextAPI的使用方式呢&#xff1f;因为它…

Date类型转成字符类型(String),字符类型(String)转成Date类型

效果图 注意&#xff1a;不建议使用YYYY-MM-dd HH:mm:ss格式&#xff0c;使用yyyy-MM-dd HH:mm:ss格式 import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.Date;public class DateTimeDemo {public static void main(String[] args) thro…

群辉开启WebDav服务+cpolar内网穿透实现移动端ES文件浏览器远程访问本地NAS文件

文章目录 1. 安装启用WebDAV2. 安装cpolar3. 配置公网访问地址4. 公网测试连接5. 固定连接公网地址6. 使用固定地址测试连接 本文主要介绍如何在群辉中开启WebDav服务&#xff0c;并结合cpolar内网穿透工具生成的公网地址&#xff0c;通过移动客户端ES文件浏览器即可实现移动设…

在Compose中控制组件中数据的流速

文章目录 一、场景描述二、代码示例 一、场景描述 在Compose中设计思想是分为状态和组件的&#xff0c;组件由状态控制。这个操作和传统的AndroidView不太一样。在Compose中对话框Dialog也是一个组件&#xff0c;其显示和隐藏由外部状态控制。这里有一个场景&#xff0c;假设显…

【C语言】(7)输入输出

输出 printf printf 是 C 语言中最常用的输出函数。它可以将格式化的字符串输出到控制台。 基本语法&#xff1a; int printf(const char *format, ...);format 是格式化字符串&#xff0c;用于指定输出的格式。... 表示可变数量的参数&#xff0c;根据格式化字符串输出相应…

ECS120fundamentals of compiling

Auto-gradedproblemsTheseproblemsarenotrandomized,sothereisnoneedtofirstsubmitafilenamedreq.Eachproblembelowappearsasaseparate“Assignment”inGradescope,beginningwith“HW1:”.1.1DFAsForeachproblem submittoGradescopea.dfafiledescribinga DFA deciding thegiven…

电路笔记 :MOS场效应晶体管+红外遥控+AMS1117 电源模块

三极管&#xff08;BJT&#xff0c;Bipolar Junction Transistor&#xff09;和 MOSFET&#xff08;Metal-Oxide-Semiconductor Field-Effect Transistor&#xff09;是两种不同类型的晶体管&#xff0c;它们在工作原理、性能特性和应用方面有一些重要的区别。 结构和工作原理…

大模型学习笔记一:大模型应开发基础(模型归类选型、安全因素选型、)

文章目录 一、大模型一些概念介绍二、市面上大模型对比三、大模型使用安全选型四、使用大模型的方式&#xff08;一问一答、Agent Function Calling、RAG、Fine-tuning五、大模型使用路线九、补充说明1&#xff09;注意力机制讲解 一、大模型一些概念介绍 1&#xff09;产品和大…