第十三单元 补充知识

这篇具有很好参考价值的文章主要介绍了第十三单元 补充知识。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

1. 泛型

泛指某种类型。

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

泛型与非泛型之间的区别

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

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

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

  • 代码扩展性好

ArrayList arr = new ArrayList();
arr.Add(1);
arr.Add("a");
arr.Add(2);
​
foreach (int a in arr)
{
    System.Console.WriteLine(a); // 编译阶段不会报错,但运行时报错
}

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

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

 

2. 枚举

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

enum Sex
{
    Man,
    Women
}

 

枚举的作用:

提高程序的可读性。

反例

int sex =1;
if(sex==0){
    Console.WriteLine("");
}else if(sex==1){
    Console.WriteLine("");
}else{
    Console.WriteLine("未知");
}

 

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

正例:

enum Sex
{
    Man,
    Women
}
static void Main(){
    Sex sex = Sex.Man;
    switch(sex)
    {
        case Sex.Man:
            Console.WriteLine("");
            break;
        case Sex.Women:
            Console.WriteLine("");
            break;
        default:
            Console.WriteLine("未知");
            break;
    }
}

 

枚举类型转换

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

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

 

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

enum OrderState
{
    WaitPay=10, // 默认是0
    Pay,   // 11
    waitSend, // 12
    WaitReceive=30, // 30
    WaitComment, // 31
    Finish, // 32
    Cancel // 33
}

 

整形与枚举相互转换

// 枚举转换为整形
OrderState orderState = OrderState.Finish;
int state = (int) orderState;
Console.WriteLine(state); //32

// 整形转换为枚举
int pay = 11;
OrderState state2 = (OrderState) pay;
Console.WriteLine(state2); // Pay

 

字符串与枚举相互转换

// 枚举转换为字符串
OrderState state = OrderState.WaitComment;
string strState = state.ToString();
Console.WriteLine(strState); // WaitComment

// 字符串转换为枚举
string waitSend = "WaitSend";
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. 展示所有学生信息
  ---- 2. 添加一个学生信息
  ---- 3. 删除一个学生信息
  ---- 4. 按学号修改学生信息
  ---- 5. 按学号查找
  ---- 6. 退出系统
请输入(1-6):

按要求实现上述功能。

 

视频教程:

C#入门到精通 - 网易云课堂 (163.com)文章来源地址https://www.toymoban.com/news/detail-464542.html

到了这里,关于第十三单元 补充知识的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 修改Win10某种文件类型的默认图标

    Typora收费后,降版本使用0.94版的,却发现这个版本的文件图标是这样的。 看的很难受,于是就开始研究怎么修改文件图标。 首先打开注册表 win + R 输入 regedit,找到以下路径 HKEY_CURRENT_USERSOFTWAREMicrosoftWindowsCurrentVersionExplorerFileExts.mdUserChoice 看到这个文件的值,记下后,

    2024年02月13日
    浏览(30)
  • GO基础进阶篇 (十三)、泛型

    先看一下这段代码。 上面的代码中,我们想要打印参数arr的信息。运行报错 想要解决的话,按照之前我们的学习,可以将函数改编如下(使用断言) 但这样会有一个坏处,当我们想要打印另一个非string的数组时,就不得不再写一个方法 这样处理,就会导致有无限多相似的代

    2024年01月18日
    浏览(37)
  • C++、STL标准模板库和泛型编程 ——适配器、补充(侯捷)

    侯捷 C++八部曲笔记汇总 - - - 持续更新 ! ! ! 一、C++ 面向对象高级开发 1、C++面向对象高级编程(上) 2、C++面向对象高级编程(下) 二、STL 标准库和泛型编程 1、分配器、序列式容器 2、关联式容器 3、迭代器、 算法、仿函数 4、适配器、补充 三、C++ 设计模式 四、C++ 新标准 五、

    2023年04月27日
    浏览(65)
  • 第十二章:泛型(Generic)

    目录 12.1:为什么要有泛型? 12.2:在集合中使用泛型 12.3:自定义泛型结构 12.4:泛型在继承上的体现 12.5:通配符的使用 12.1:为什么要有泛型?         泛型:(标签)允许在定义类、接口时候通过一个标识来表示类中某个属性的类型或者是某个方法的返回值及参数类

    2024年02月07日
    浏览(32)
  • (三十三)补充Python经典面试题(吸收高级编程特性)

    这个函数定义有一个默认参数b,它的默认值是一个空列表[]。这道面试题涉及到Python中 函数参数默认值的一些重要概念和陷阱 。 首先,当你调用这个函数时,如果不传递参数b的值,它将使用默认的空列表[]。例如: 但是,这里有一个陷阱。默认参数b(即空列表[])在函数定

    2024年02月04日
    浏览(44)
  • 第十二站(20天):C++泛型编程

    C++提供了模板(template)编程的概念。所谓模板,实际上是建立一个通用函数或类, 其 类内部的类型和函数的形参类型不具体指定 ,用一个虚拟的类型来代表。这种通用的方式称 为模板。 模板是泛型编程的基础, 泛型编程即以一种独立于任何特定类型的方式编写代码 如: vect

    2024年01月22日
    浏览(28)
  • 第五单元 泛型集合

      1、存取数据需要进行装箱拆箱 2、数据类型转换存在隐患   非泛型集合性能   输出结果:非泛型集合耗时(ms):258   泛型集合性能   输出结果:泛型集合耗时(ms):25   使用场景: 在Linq 中比较常见 存储数据   1、T只是占位符,会被传递的数据类型替换。 2、实例化List时传

    2024年02月05日
    浏览(44)
  • 第四单元 泛型

    编写一个方法,实现两数相加并返回结果。   作用 泛型增强了代码的可读性 泛型有助于实现代码的重用、保护类型的安全以及提高性能。 我们可以创建泛型集合类。 泛型实现了类型和方法的参数化 我们还可以对泛型类进行约束以访问特定数据类型的方法。 关于泛型数据类

    2024年02月08日
    浏览(68)
  • CPP-Templates-2nd--第十一章 泛型库

    目录 11.1 可调用对象(Callables)  11.1.1 函数对象的支持 11.1.2 处理成员函数以及额外的参数 11.1.3 函数调用的包装 11.2 其他一些实现泛型库的工具 11.2.1 类型萃取 11.2.2 std::addressoff() 11.2.3 std::declval() 11.3 完美转发临时变量 11.4 作为模板参数的引用 11.5 推迟计算(Defer Evaluation)

    2024年02月07日
    浏览(29)
  • HCIP第十三天(笔记)

    STP --- 生成树协议 冗余 线路冗余 设备冗余 网关冗余 UPS冗余 二层环路引发的问题 1.广播风暴 --- 广播帧在二层环路中会形成顺时针和逆时针两重环路,无限循环,最终将导致设备宕机,最终导致网络瘫痪 2.MAC地址表的翻摆(MAC地址表的漂移)---- 因为循环的存在,导致MAC地址

    2024年02月16日
    浏览(33)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包