当前位置: 首页 > news >正文

一周总结

LINQ 与 Lambda 表达式(C# 的“魔法”)

比较高级的 C# 特性:

  • Distinct():一行代码去重。

  • OrderByDescending():一行代码排序。逆序正序是orderby。

  • pair => pair.Value:理解了 Lambda 表达式其实就是一个“临时的筛选/排序规则”,告诉程序“我要按什么属性来操作”。这是在orderby方法中写来进行筛选。

Dictionary(字典)的核心威力

1.字典比列表(List)更强大的地方:查找速度快

这是源于他的特殊结构(数组加链表的特殊结构)

具体为两个数组,一个为查找,一个为存储

在数据数组中最小的单元是结构体,包含:

int hashCode缓存的哈希值。这是为了性能,下次扩容搬家时,直接拿这个值去算新位置,不用重新对 Key 进行复杂的哈希计算。

int next链表的“指针”。如果发生哈希冲突(撞车),这个值会指向同在这个桶里的“上一个”数据的下标。如果没有下一个,就是 -1。

TKey key:你存的键。

TValue value:你存的值。

在查找数组中存储着数据数组,数据数组在查找数组的下标是他的映射

字典会把键使用GetHashCode()转化为哈希值并除以查找数组的长度计算出一个数,这个数作为数据数组的下标,如果这个下标没有数组就存储,有的话就会用到链表,这时候上述next就会发挥作用。

查找数组也就是字典的长度在字典new出来时是0,因为他是懒加载,第一次插入add的时候扩容为3,往后会扩容为至少是当前容量 2 倍的最小质数。

2.不再需要遍历:以前找个商品要用foreach循环整个列表,现在直接用cart.ContainsKey("商品名")就能判断是否存在,效率极高。

3.直接拿数据:使用cart["商品名"]就能直接获取或修改对应的价格和数量,像查字典一样精准。

在使用泛型类使用<T>的时候遇到比较问题

在方法传入T a,T b想要进行比较传统使用< ,>会编译不通过,

方法1

可以使用compareto方法,但使用时必须继承IComparable接口

compareto具体可以比较

  • 数字类int,double,float,long,byte等(比大小)。

  • 文本类string,char(比字典顺序)。

  • 时间类DateTime(比早晚)。

  • 布尔类boolfalse小于true,虽然很少这么比)。

方法2

可以使用 dynamic来修饰需要比较的量

编译不会管dynamic类型会直接通过在出错时中断程序

文件操作中遇到的问题

在使用copy时需要的参数时需要文件名字的不是指定位置

比如我想把文件1.txt复制到d:\23文件夹需要的参数时d:\23\1.txt,这时用到提取文件名字方法Path.GetFileName()和拼接方法Path.Combine("D:\\", "文件名.txt")

遇到"The process cannot access the file... because it is being used by another process"时,明白了这是因为文件被锁住了

具体为在调用d盘的时候出错好像源路径是默认打开的

通配符概念 (Wildcards)

*.*的含义:明白了*代表任意字符。

  • *.*= 任意文件名 + 任意后缀(即所有文件)。

  • *.txt= 任意文件名 + txt 后缀(即仅 txt 文件)

http://www.cnnetsun.cn/news/75574.html

相关文章:

  • Android权限管理的终极解决方案:XXPermissions框架深度实践
  • Windows虚拟显示器深度指南:5步实现多屏工作空间扩展
  • Docker Init初始化LLama-Factory训练环境脚本模板分享
  • Wan2.2-T2V-5B支持多语言文本输入吗?中文生成效果实测
  • ComfyUI破解警告:this unlicensed adobe app has been disabled如何避免?
  • 4、Linux 网络基础重访
  • 18、Linux网络安全与配置优化指南
  • 结合HuggingFace镜像网站快速拉取Wan2.2-T2V-A14B模型
  • Java Web 房屋租赁管理系统系统源码-SpringBoot2+Vue3+MyBatis-Plus+MySQL8.0【含文档】
  • AutoGPT与Elasticsearch结合使用:实现海量文档的智能检索
  • 思考与练习之答案与解析(第二章 程序设计思维与方法)
  • 【毕业设计】SpringBoot+Vue+MySQL 高校教师教研信息填报系统平台源码+数据库+论文+部署文档
  • PlantUML Editor终极指南:高效UML绘图的完整教程
  • OpenSpec标准兼容性分析:EmotiVoice是否符合下一代TTS规范?
  • Java SpringBoot+Vue3+MyBatis 房屋租赁管理系统系统源码|前后端分离+MySQL数据库
  • 企业级高校教师教研信息填报系统管理系统源码|SpringBoot+Vue+MyBatis架构+MySQL数据库【完整版】
  • LobeChat会话管理机制详解:持久化与上下文保持
  • OpenSpeedy:免费Windows系统加速工具完整使用指南
  • 图片转3D:零基础打造专属立体浮雕的艺术之旅
  • Vue Signature Pad 电子签名组件使用指南
  • Display Driver Uninstaller深度解析:告别显卡驱动残留的终极方案
  • AutoGPT进阶技巧:自定义工具调用与多步骤流程优化
  • Wan2.2-T2V-A14B与传统T2V模型的五大核心优势对比
  • 详解Wan2.2-T2V-A14B的MoE架构设计及其对视频连贯性的影响
  • 科研工作者的数字实验室:Obsidian知识库模板深度体验指南
  • OpenSpeedy终极指南:免费Windows系统加速神器完全解析
  • 10分钟精通lay/layer弹窗异步数据流终极指南
  • Nature:从基因到疾病,新研究揭示其间的复杂网络
  • 优化Django REST Framework的PATCH请求
  • 基于Next.js的LobeChat如何实现高效AI交互体验