经验首页 前端设计 程序设计 Java相关 移动开发 数据库/运维 软件/图像 大数据/云计算 其他经验
当前位置:技术经验 » 程序设计 » 编程经验 » 查看文章
第十三单元 补充知识
来源:cnblogs  作者:誉尚学教育  时间:2023/5/30 15:28:35  对本文有异议

1. 泛型

泛指某种类型。

1、使用参数形式定义 2、使用时传入具体类型 3、编译时检查类型安全 4、逻辑上是多个不同类型

泛型与非泛型之间的区别

  • 性能高:可以避免装箱和拆箱操作

  • 类型安全 :在进行类型转换的时候不会抛出异常

  • 代码重用:定义一次,用许多种不同类型实例化

  • 代码扩展性好

  1. ArrayList arr = new ArrayList();
  2. arr.Add(1);
  3. arr.Add("a");
  4. arr.Add(2);
  5. ?
  6. foreach (int a in arr)
  7. {
  8. System.Console.WriteLine(a); // 编译阶段不会报错,但运行时报错
  9. }

使用List 泛型集合解决问题:

  1. List<int> list = new List<int>();
  2. list.Add(1);
  3. list.Add(2);
  4. ?
  5. // list.Add("a"); // 编译阶段就能发现问题,因为此时已经指定为Int类型,不能再乱加数据了
  6. foreach (int a in arr)
  7. {
  8. System.Console.WriteLine(a);
  9. }

 

2. 枚举

枚举指的是一组固定的常量集合。例如生活中的性别,星期,季节等等,这些都是固定常量值组成。声明一个枚举的关键是enum, System.Enum类型是所有枚举类型的抽象基类 .

  1. enum Sex
  2. {
  3. Man,
  4. Women
  5. }

 

枚举的作用:

提高程序的可读性。

反例

  1. int sex =1;
  2. if(sex==0){
  3. Console.WriteLine("");
  4. }else if(sex==1){
  5. Console.WriteLine("");
  6. }else{
  7. Console.WriteLine("未知");
  8. }

 

时间久了,或许连自己都不知道 0,1,2到底是什么意思了。

正例:

  1. enum Sex
  2. {
  3. Man,
  4. Women
  5. }
  6. static void Main(){
  7. Sex sex = Sex.Man;
  8. switch(sex)
  9. {
  10. case Sex.Man:
  11. Console.WriteLine("");
  12. break;
  13. case Sex.Women:
  14. Console.WriteLine("");
  15. break;
  16. default:
  17. Console.WriteLine("未知");
  18. break;
  19. }
  20. }

 

枚举类型转换

其实每一个枚举值,都会对应一个整形值,默认从0开始,如上述的,Man =0, Women=1. 也可以为枚举指定整形值,如:

  1. enum Sex
  2. {
  3. Man=10, // 默认是0
  4. Women // 如果上述指定了10,则Woman=11,如果没有指定值为10,则为1
  5. }

 

枚举值默认为依次递增,直到再次遇到指定的值的枚举值,如:

  1. enum OrderState
  2. {
  3. WaitPay=10, // 默认是0
  4. Pay, // 11
  5. waitSend, // 12
  6. WaitReceive=30, // 30
  7. WaitComment, // 31
  8. Finish, // 32
  9. Cancel // 33
  10. }

 

整形与枚举相互转换

  1. // 枚举转换为整形
  2. OrderState orderState = OrderState.Finish;
  3. int state = (int) orderState;
  4. Console.WriteLine(state); //32
  5. // 整形转换为枚举
  6. int pay = 11;
  7. OrderState state2 = (OrderState) pay;
  8. Console.WriteLine(state2); // Pay

 

字符串与枚举相互转换

  1. // 枚举转换为字符串
  2. OrderState state = OrderState.WaitComment;
  3. string strState = state.ToString();
  4. Console.WriteLine(strState); // WaitComment
  5. // 字符串转换为枚举
  6. string waitSend = "WaitSend";
  7. OrderState state2 = (OrderState)Enum.Parse(typeof(OrderState), waitSend);

 

3 .Net 6.0 顶级语句

在创建.Net Core 6.0 项目时,会发现,Program.cs文件中 把最基本的Main方法给去掉了,这其实是 C#9.0 语法中的顶级语句语法

应用程序中只有一个文件可使用顶级语句。 如果编译器在多个源文件中找到顶级语句,则是错误的。 如果将顶级语句与声明的程序入口点方法(通常为 Main 方法)结合使用,也会出现错误。 从某种意义上讲,可认为一个文件包含通常位于 Program 类的 Main 方法中的语句。

4. 综合练习

学生类:学号(int),姓名(string),性别(char), 年龄(int)

  1. *****************欢迎来到任我行码农场,学生管理系统********************
      ---- 1. 展示所有学生信息
      ---- 2. 添加一个学生信息
      ---- 3. 删除一个学生信息
      ---- 4. 按学号修改学生信息
      ---- 5. 按学号查找
      ---- 6. 退出系统
    请输入(1-6):

按要求实现上述功能。

 

视频教程:

誉尚学教育_誉尚学教育腾讯课堂官网 (qq.com)
或者:
C# 最强入门编程(.Net 学习系列开山巨作)_哔哩哔哩_bilibili

原文链接:https://www.cnblogs.com/xuyubing/p/17443361.html

 友情链接:直通硅谷  点职佳  北美留学生论坛

本站QQ群:前端 618073944 | Java 606181507 | Python 626812652 | C/C++ 612253063 | 微信 634508462 | 苹果 692586424 | C#/.net 182808419 | PHP 305140648 | 运维 608723728

W3xue 的所有内容仅供测试,对任何法律问题及风险不承担任何责任。通过使用本站内容随之而来的风险与本站无关。
关于我们  |  意见建议  |  捐助我们  |  报错有奖  |  广告合作、友情链接(目前9元/月)请联系QQ:27243702 沸活量
皖ICP备17017327号-2 皖公网安备34020702000426号