C#学习笔记(十二)

devtools/2024/10/22 8:38:35/

C#学习笔记(十二)

    • 第九章 面向对象的容器之集合使用和封装特性
      • 一、泛型集合 List<T>应用
        • 1. 什么是泛型
        • 2. 为什么要用集合
        • 3. 使用方法
      • 二、泛型字典集合 Dictionary<k,v>应用
        • 1. 简介
        • 2. 使用方法
            • 键的唯一性
      • 三、面向对象编程的封装特性

第九章 面向对象的容器之集合使用和封装特性

一、泛型集合 List应用

1. 什么是泛型

所谓泛型,就是我们在定义一个类、一个方法、一个集合的时候,并不明确的规定它是什么类型,但是当你使用的时必须一开始就要明确类型,而且明确后,就不能修改。

2. 为什么要用集合

以前我学过数组,数组是按照索引的方式存储数据的,而且一旦数组的元素个数确定是无法改变的。但是在实际中数据的多少有很多时候是不能确定的,所以数组的局限性很明显。使用集合可以很好的解决这个问题。也就是数组和集合最大的区别就是长度不用固定,可以随时添加。

3. 使用方法

List:泛型集合的定义规范。我们根据需要,在使用中要把这个 T 换成具体的数据类型,确定后不可改变。
以下是集合的部分使用方法

            //创建集合对象List<string> nameList = new List<string>();//添加集合元素nameList.Add("流星");nameList.Add("夏宇");nameList.Add("小海");//集合初始化器List<string> nameList2 = new List<string>() { "流星","夏宇","小海"};//集合复制List<string> nameList2_s = new List<string>(nameList2);//集合元素个数int nameList_Number = nameList.Count;//集合转化为数组string[] nameArray = nameList.ToArray();//将数组添加到集合List<string> nameList3 = new List<string>();nameList3.AddRange(nameArray);//判断集合是否存在某元素bool reference1 = nameList.Contains("流星");bool reference2 = nameList.Contains("大海");//在指定位置插入元素nameList.Insert(0,"牛力");nameList2.Insert(0, "牛力");nameList2_s.Insert(0, "牛力");//删除元素//通过元素内容删除nameList.Remove("牛力");//通过索引删除nameList2.RemoveAt(0);//全部删除nameList2_s.Clear();

二、泛型字典集合 Dictionary<k,v>应用

1. 简介

Dictionary:字典
Dictionary<k,v>:字典集合,也就是我们常说的基于 Hash(哈希表)的数据结构。Hash 结构就是我们说的字典类型。
字典集合中 k 就是 key,表示“键”,这个键就好比字典的拼音或者偏旁部首,v 就是 value,表示“值”,这个值就是我们要找的具体内容。

2. 使用方法
   ID_card people1 = new ID_card(){ name = "流星", sex = "男" };ID_card people2 = new ID_card(){ name = "小海", sex = "男" }; ID_card people3 = new ID_card(){ name = "夏宇", sex = "男" };//创建一个字典集合对象Dictionary<string, ID_card> people101 = new Dictionary<string, ID_card>();//添加元素people101.Add("179045009801", people1);people101.Add("179045009802", people2);people101.Add("179045009803", people3);//使用字典初始化器Dictionary<string, ID_card> people102 = new Dictionary<string, ID_card>(){["179045009801"] = people1,["179045009802"] = people2,["179045009803"] = people3,};//根据key获取valueConsole.WriteLine(people101["179045009801"]);//遍历keyforeach(string items in people101.Keys){Console.WriteLine(items);}//遍历valueforeach (ID_card items in people101.Values){Console.WriteLine($"{items.name}\t性别:{items.sex}");}//获取元素个数int keyNumber = people101.Count;//判断是否包含某个keybool keyBool1 = people101.ContainsKey("1098789098");//清除所有键和值people101.Clear();Console.WriteLine("keynumber:"+people101.Count);

其中的ID_card 是自定义的一个类

    public class ID_card{public  string name;// 姓名public  string sex;// 性别public  string nation;// 民族public  string address;// 住址public  string IDnumber;// 身份证号码public  DateTime dateBirth;// 出生日期}

强调:Dictionary 集合遍历的时候,只能遍历 key 或者 value,这点比较特殊

键的唯一性

在Dictionary数据结构中,通常用 <key, value> 的形式表示,这里的键(Key)通常是唯一的,也就是说,一个键值对中的键不允许重复。如果你试图插入一个已经存在的键,后面的值会覆盖前面的值,这被称为“替换”(Update)。

三、面向对象编程的封装特性

面向对象有三大特性,第一是封装,第二是继承,第三是多态。三大特性从不同的角度概述了面向对象编程的思想和面向过程的最大区别。
封装之所以放到面向对象的首要位置,是因为面向对象处处在体现封装!封装小到属性方法类的封装、大到类库模块系统的封装。封装就是告诉我们,当你在做程序开发的时候,必须着眼整体考虑,分步实施,基于对象和模块来设计项目;其次考虑这些对象或者模块是如何管关联到一起的,最后再到细节的实现。
做好封装,是程序编写的第一重要工作。


http://www.ppmy.cn/devtools/127785.html

相关文章

汽车管理系统——登录界面

目录 如何实现登录&#xff1f;登录成功如何显示下一个界面&#xff1f;return a.exec()这边的a是什么对象如何创建数据库中的密码表&#xff1f; 为什么这边添加QT设计师界面类&#xff0c;不是头文件源文件如何获取文本框内的信息密码不一定是整型&#xff0c;需要用字符串&a…

【状态机DP】力扣1262. 可被三整除的最大和

给你一个整数数组 nums&#xff0c;请你找出并返回能被三整除的元素 最大和。 示例 1&#xff1a; 输入&#xff1a;nums [3,6,5,1,8] 输出&#xff1a;18 解释&#xff1a;选出数字 3, 6, 1 和 8&#xff0c;它们的和是 18&#xff08;可被 3 整除的最大和&#xff09;。 示…

OSI参考模型与TCP/IP模型

OSI参考模型 物理层 定义电压、接口、线缆标准、传输距离、传输介质等物理参数。数据链路层&#xff08;确定范围里的某一个&#xff09; MAC地址寻址网络层&#xff08;确定一个范围&#xff09; 网络地址层寻址、路由传输层&#xff08;区分不同的程序&#xff09; 数据分段…

手机淘宝自动下单退货自动化RPA脚本机器人

使用手机集线器连接多个手机并发运行。 脚本分3个部分&#xff08;读取本地连接下单&#xff0c;退货获取退货地址信息&#xff0c;填写快递单号&#xff09; 脚本部分图结构看下面的图片 部分数据统计展示

估值与周期风险评估(2024/6/30)

这是每周最重要的文章。是我投资理论体系到实盘实战的运用。一套稳定的投资体系是我长期获利的源泉。一是明确长期估值和对应的整体仓位。二是明确短期风险状态和对应的网格交易计划。每周日视频讲解实盘&#xff0c;交流本周估值与下周网格计划。用我公开九年的实盘&#xff0…

Linux的find命令使用指南及实际shell用例

Linux的find命令使用指南及实际shell用例 基本语法常用选项实际shell用例 find命令是Linux和UNIX系统中一个非常强大的工具&#xff0c;它用于在指定目录下根据给定条件搜索文件。find命令功能强大&#xff0c;使用灵活&#xff0c;可以组合多种条件和选项来精确查找文件&#…

程序员的浪漫之给对象爬数据,没想到过程中竟然被写接口的老哥字段命名给秀到了!

目录 一、序言二、分析需求三、找数据分析字段四、建个表开爬数据五、结语 一、序言 最近对象转了销售岗&#xff0c;她的领导布置了项任务&#xff0c;一周要找500个对标客户的联系电话。看她又上天眼查、企查查、爱企查&#xff0c;还上各种采购平台手动抄采购负责人的信息和…

semi-Naive Bayesian(半朴素贝叶斯)

semi-Naive Bayesian&#xff08;半朴素贝叶斯&#xff09; 引言 朴素贝叶斯算法是基于特征是相互独立这个假设开展的&#xff08;为了降低贝叶斯公式: P ( c ∣ x ) P ( c ) P ( x ∣ c ) P ( x ) P(c|x) \frac {P(c)P(x|c)}{P(x)} P(c∣x)P(x)P(c)P(x∣c)​中后验概率 P …