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

C# 枚举

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

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

1enum Level 2{ 3 Low, 4 Medium, 5 High 6}

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

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

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

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

1class Program 2{ 3 enum Level 4 { 5 Low, 6 Medium, 7 High 8 } 9 static void Main(string[] args) 10 { 11 Level myVar = Level.Medium; 12 Console.WriteLine(myVar); 13 } 14}

输出将为:

Medium

枚举值

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

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

1enum Months 2{ 3 January, // 0 4 February, // 1 5 March, // 2 6 April, // 3 7 May, // 4 8 June, // 5 9 July // 6 10} 11 12static void Main(string[] args) 13{ 14 int myNum = (int) Months.April; 15 Console.WriteLine(myNum); 16}

输出将为:

3

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

1enum Months 2{ 3 January, // 0 4 February, // 1 5 March=6, // 6 6 April, // 7 7 May, // 8 8 June, // 9 9 July // 10 10} 11 12static void Main(string[] args) 13{ 14 int myNum = (int) Months.April; 15 Console.WriteLine(myNum); 16}

输出将为:

7

在 Switch 语句中使用枚举

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

1enum Level 2{ 3 Low, 4 Medium, 5 High 6} 7 8static void Main(string[] args) 9{ 10 Level myVar = Level.Medium; 11 switch(myVar) 12 { 13 case Level.Low: 14 Console.WriteLine("低级别"); 15 break; 16 case Level.Medium: 17 Console.WriteLine("中级别"); 18 break; 19 case Level.High: 20 Console.WriteLine("高级别"); 21 break; 22 } 23}

输出将为:

中级别

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

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

C# 文件

处理文件

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

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

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

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

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

写入文件并读取它

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

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

输出将为:

Hello World!

C# 异常

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

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

C# try 和 catch

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

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

trycatch 关键字是成对出现的:

1try 2{ 3 // 试图执行的代码块 4} 5catch (Exception e) 6{ 7 // 处理错误的代码块 8}

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

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

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

错误消息将类似于:

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

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

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

1try 2{ 3 int[] myNumbers = {1, 2, 3}; 4 Console.WriteLine(myNumbers[10]); 5} 6catch (Exception e) 7{ 8 Console.WriteLine(e.Message); 9}

输出将为:

Index was outside the bounds of the array.

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

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

输出将为:

Something went wrong.

finally 块

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

1try 2{ 3 int[] myNumbers = {1, 2, 3}; 4 Console.WriteLine(myNumbers[10]); 5} 6catch (Exception e) 7{ 8 Console.WriteLine("Something went wrong."); 9} 10finally 11{ 12 Console.WriteLine("The 'try catch' is finished."); 13}

输出将为:

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

throw 关键字

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

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

1static void checkAge(int age) 2{ 3 if (age < 18) 4 { 5 throw new ArithmeticException("Access denied - You must be at least 18 years old."); 6 } 7 else 8 { 9 Console.WriteLine("Access granted - You are old enough!"); 10 } 11} 12 13static void Main(string[] args) 14{ 15 checkAge(15); 16}

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

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

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

1checkAge(20);

输出将为:

Access granted - You are old enough!

C# 如何相加两个数字

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

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

最后

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

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

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

点赞
收藏

评论区

加载中...

相关推荐

java枚举类型

java枚举类型enum枚举类型是java5新增特性的一部分,是一种特殊的数据类型(既是一种类类型但是又比类类型多些特殊的约束)枚举定义的方式:publicenumDay{MONDAY,TUESDAY,WEDNESDAY,THURSDAY,FRIDAY,SATURDAY,SUNDAY}定义

java枚举

https://www.cnblogs.com/hyl8218/p/5088287.html摘抄并自查语法(定义)创建枚举类型要使用enum关键字,隐含了所创建的类型都是java.lang.Enum类的子类。枚举类符合通用模式ClassEnum<EextendsEnum<E,而E表示枚举类型的名称。枚举类型的每一

java枚举类

使用enum声明,默认直接继承了java.lang.Enum类,而不是Object类;枚举类的对象是固定的,实例个数有限,不可以再new(),枚举对象后可以跟()。枚举元素必须位于枚举类体中的最开始部分,枚举元素后要有分号与其他成员分隔。枚举类的构造方法的权限修饰符默认是private;一旦枚举对象后面加上{},那么该对象实际是枚举匿名内部

Java枚举的小知识点

enum是jdk1.5引入的,使用它可以创建枚举类型,就像使用class创建类一样。enum关键字创建的枚举类型默认是java.lang.Enum(一个抽象类)的子类用法1常量一般定义常量都是publicstaticfinal…,现在可以把相关常量都放在一个枚举类里,而且枚举比常量提供更多方法1.enumsea

Java中枚举的线程安全性及序列化问题

JavaSE5提供了一种新的类型Java的枚举类型,关键字enum可以将一组具名的值的有限集合创建为一种新的类型,而这些具名的值可以作为常规的程序组件使用,这是一种非常有用的功能。本文将深入分析枚举的源码,看一看枚举是怎么实现的,他是如何保证线程安全的,以及为什么用枚举实现的单例是最好的方式(https://www.oschina.net/act

Java分享笔记:自定义枚举类 & 使用enum关键字定义枚举类

  在JDK1.5之前没有enum关键字,如果想使用枚举类,程序员需要根据Java语言的规则自行设计。从JDK1.5开始,Java语言添加了enum关键字,可以通过该关键字方便地定义枚举类。这种枚举类有自己的程序编写规则,并且具有一些特殊方法。  下面是笔者分别针对自定义枚举类和enum枚举类的程序设计。\1\自定义枚举类