首页
学习
活动
专区
圈层
工具
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

.NET面试题系列 - IEnumerable的派生类

Stack 的容量可以根据实际的使用自动的扩展(翻倍扩展),并且可以通过 TrimExcess方法来减少容量。 堆栈最基本的两种操作就是向堆栈内添加数据项以及从堆栈中删除数据项。...Pop 操作会返回栈顶的数据项,但是此操作也会把此数据项从堆栈中移除。如果只是希望察看栈顶的数据项而不是真的要移除它,在 C#语言中有一种名为 Peek(取数)的操作可以实现。...Tree-based dictionary (SortedDictionary):当需要使用键值对(Key-Value)来快速添加和查找,并且元素总是需要根据 Key 来排序时。  ...在C#中使用foreach将会隐式的调用MoveNext方法。可以通过查看IL得知foreach运作的全过程。 IEnumerable是整个LINQ的基础。...整个LINQ都基于IEnumerable的扩展方法之上。C#大部分数据结构都实现了IEnumerable。 IEnumerable的派生类由于没有泛型,所以基本不考虑使用。

1.7K20
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    C#集合类型大揭秘

    借助 Length 属性,C# 编译器可以使用 for 语句迭代数组中的每个元素。for适用于长度固定且始终支持索引运算符的数组,但并不是所有类型集合的元素数量都是已知的。...上面的例子中手写实现迭代器是十分麻烦的,在c#1.0中这是唯一的方式。在c#2.0中,我们可以使用yield语法糖简化迭代器。...Dictionary之所以能实现快速查找元素,其内部使用哈希表来存储元素对应的位置,我们可以通过哈希值快速地从哈希表中定位元素所在的位置索引,从而快速获取到key对应的Value值。...2.SortedDictionary SortedDictionary和Dictionary类似,至于区别我们从名称上就可以看出来,Dictionary是无序的,SortedDictionary则是有序的...更好的选择的是使用的C#提供的线程安全集合(命名空间:System.Collections.Concurrent)。线程安全集合使用几种算法来最小化线程阻塞。 ?

    1.5K40

    C#集合类型大揭秘

    借助 Length 属性,C# 编译器可以使用 for 语句迭代数组中的每个元素。for适用于长度固定且始终支持索引运算符的数组,但并不是所有类型集合的元素数量都是已知的。...上面的例子中手写实现迭代器是十分麻烦的,在c#1.0中这是唯一的方式。在c#2.0中,我们可以使用yield语法糖简化迭代器。...Dictionary查找元素的实现: **Dictionary**之所以能实现快速查找元素,其内部使用哈希表来存储元素对应的位置,我们可以通过哈希值快速地从哈希表中定位元素所在的位置索引...2.SortedDictionary **SortedDictionary和Dictionary**类似,至于区别我们从名称上就可以看出来...更好的选择的是使用的C#提供的线程安全集合(命名空间:System.Collections.Concurrent)。线程安全集合使用几种算法来最小化线程阻塞。

    1.2K70

    数据结构基础温故-6.查找(下):哈希表

    Dictionary是泛型版本的哈希表,但和Hashtable之间并非只是简单的泛型和非泛型的区别,两者使用了完全不同的哈希冲突解决办法,我们先来看看Dictionary如何使用。...Hashtable 与 Dictionary 的区别: ①Hashtable使用闭散列法来解决冲突,而Dictionary使用开散列法解决冲突; ②Dictionary相对Hashtable来说需要更多的存储空间...; ④Hashtable在扩容时由于重新计算哈希地址,会消耗大量时间计算,而Dictionary的扩容相对Hashtable来说更快; ⑤单线程程序中推荐使用Dictionary,而多线程程序中则推荐使用...本次测试会首先创建一个100万个随机排列整数的数组,然后将数组中的数字依次插入三种数据结构中,最后从三种数据结构中删除所有数据,每个操作分别计算耗费时间(这里计算操作使用了老赵的CodeTimer类实现性能计数...参考资料 (1)陈广,《数据结构(C#语言描述)》 (2)程杰,《大话数据结构》 (3)段恩泽,《数据结构(C#语言版)》 (4)马语者,《C#中Hashtable的用法》 作者:周旭龙 出处:http

    61710

    .NET中的泛型集合

    数组从元素角度来说是易变的,从大小角度来说是固定的。它们显示实现了集合接口中所有的可变方法(如Add和Remove),并抛出NotSupportedException。...引用类型的数组通常是协变的;如Stream[]引用可以隐式转换为Object[],并且存在显式的反向转换(容易混淆的是,也可以将Stream[]隐式转换为IList,尽管IList本身是不变的)。...向量的性能更佳,是C#中最常用的。T[][]形式的数组仍然为向量,只不过元素类型为T[];只有C#中的矩形数组,如string[10, 20],属于CLR术语中的数组。...在C#中,你不能直接创建非零下限的数组——需要使用Array.CreateInstance来创建,它可以分别指定下限、长度和元素类型。...如果创建了非零下限的一维数组,就无法将其成功转换为T[]——这种强制转换可以通过编译,但会在执行时失败。 C#编译器在很多方面都内嵌了对数组的支持。

    19420

    .NET中数据访问方式(一):LINQ

    NET中如:List,Dictionary,数组(由CLR负责隐式实现IEnumerable接口)等,实现了IEnumerable接口。...可查询类型无需额外操作即可进行LINQ操作,若数据源在内存中不以可查询类型的形式存在,那么LINQ提供程序必须要先将数据源转换为可查询类型,如LINQ to XML将XML文件转换为可查询的XElement...NET中预定义的LINQ提供程序包括:LINQ to Object、LINQ to XML (C#)、LINQ to SQL、LINQ to DataSet、LINQ to Entities。...IQueryable适合使用对进程外(如数据库)的数据进行查询操作,如:LINQ to Entities。...工具推荐 LINQ Pad是一款轻量级的数据查询工具,在LINQ Pad中可以使用LINQ表达式、扩展方法、SQL语句等对数据库进行操作,简单易用功能强大。 ?

    2.7K30

    dotnet C# 字典 Dictionary 和 Hashtable 的性能对比

    如果没有特别的需求,请使用 Dictionary 而不是 Hashtable 原因是 Dictionary 的性能更好,本文将告诉大家 Stephen Toub 大佬的评测 从 2021 的 6 月 23...by stephentoub · Pull Request #4731 · dotnet/wpf 这里可以看到,他将使用 Dictionary 替换 Hashtable 类型用来做性能提升,同时也给出了性能评测...大体来说就是 Hashtable 将会有额外的内存分配,如 Count 元素数量为 1 的时候,分配是 72B 的空间,同时在读写性能上,也不如字典来得快,性能差距大概是 10 倍左右。...(i, out object o)) { } } _dictionary.Clear(); } } 以上代码可以从...github 看到,上面用了基准(标准)性能测试的方法,关于如何在 .NET 里面做基准性能测试,请看 C# 标准性能测试 此外在 WPF 仓库上,还有以下更改也是优化字典性能,其中还有我的更改 Replaced

    67410

    【深入浅出C#】章节 5: 高级面向对象编程:泛型编程和集合类型

    出队:使用Dequeue方法从队列中移除并返回队首元素。...查询 4.1 迭代集合类型的方式和循环遍历 在C#中,可以使用不同的方式迭代和遍历集合类型,包括数组、列表、字典、集合和队列。...4.2 LINQ查询的概念和基本用法 LINQ(Language Integrated Query)是一种在C#中用于查询和操作数据的语言集成查询技术。...执行查询:使用LINQ提供的方法,如ToList()、ToArray()、First()等,执行查询并返回结果。...LINQ还支持其他强大的功能,如分组、排序、投影等。通过LINQ,可以使用统一的语法来处理不同类型的数据源,简化了查询和操作数据的过程,提高了代码的可读性和可维护性。

    40921

    C# 的集合

    在C#编程中,集合是管理数据集合的核心工具。集合不仅包括常见的列表、字典、栈和队列,还涵盖了更多高级的集合类型,如HashSet、SortedList等。...本文将深入探讨C#中的集合,包括它们的基本概念、实现方式、高级用法和最佳实践。1. 集合的基本概念1.1 什么是集合在C#中,集合是指一组数据的合集,可以包含相同类型的或不同类型的数据。...集合的高级特性3.1 LINQ语言集成查询(LINQ)提供了一种查询和操作集合的强大方式。...4.2 注意性能了解不同集合类型的性能特点,如List的快速索引访问,Dictionary的快速键查找。...4.3 使用LINQ简化数据操作利用LINQ可以简化集合的查询和操作。4.4 考虑线程安全在多线程环境中,考虑使用线程安全的集合类型。

    2.3K00

    C#规范整理·集合和Linq

    前言#   C#中的集合表现为数组和若干集合类。不管是数组还是集合类,它们都有各自的优缺点。如何使用好集合是我们在开发过程中必须掌握的技巧。...不要小看这些技巧,一旦在开发中使用了错误的集合或针对集合的方法,应用程序将会背离你的预想而运行。 正文# ### 1.元素数量可变的情况下不应使用数组   在C#中,数组一旦被创建,长度就不能改变。...从内存使用的角度来讲,数组在创建时被分配了一段固定长度的内存。...双向链表中的每个节点都向前指向Previous节点,向后指向Next节点。 在FCL中,非线性集合实现得不多。非线性集合分为层次集合和组集合。层次集合(如树)在FCL中没有实现。...11.使用匿名类型存储LINQ查询结果(最佳搭档)# 从.NET 3.0开始,C#开始支持一个新特性:匿名类型。匿名类型由var、赋值运算符和一个非空初始值(或以new开头的初始化项)组成。

    23030

    解析“60k”大佬的19道C#面试题(下)

    解析“60k”大佬的19道C#面试题(上) 这些题目确实不怎么经常使用,因此在后文中,我会提一组我的私房经典“ 6k面试题”,供大家轻松一刻使用。...首先是解析阶段的表达式树, C# 编译器在编译时,它会将这些语句以表达式树的形式保存起来,在求值时, C# 编译器会将所有的 表达式树 翻译成求值方法(如在数据库中执行 SQL 语句)。...因为 Span 表示一段连续、固定的内存,可供托管代码和非托管代码访问(不需要额外的 fixed )这些内存可以从 stackalloc 中来,也能从 fixed 中获取托管的位置,也能通过 Marshal.AllocHGlobal...中使用(因为 Lambda / 本地函数 都是闭包,而闭包会生成一个引用类型的类) 以前常有一个疑问,我们常常说值类型在栈中,引用类型在堆中,那放在引用类型中的值类型成员,内存在哪?...Dictionary内部是什么数据结构? internal与 protected有啥区别? string/ StringBuilder有啥区别?

    1.6K10

    .NET周刊【9月第3期 2024-09-15】

    dotnet 读 WPF 源代码笔记 从 WM_POINTER 消息到 Touch 事件 https://www.cnblogs.com/lindexi/p/18403860 本文介绍如何在 WPF 中通过...从.NET 9中移除了BinaryFormatter,并讨论了ASP.NET Core中的防抖实现。还介绍了一些C#用户控件如流动管道和指示灯,以及使用Dependify工具处理.NET依赖关系。....NET 9 中对 UWP 的支持使得能够迁移到 WinUI 3,并能够从更新的 .NET Core 2.0 级别功能和 .NET Native (AOT) 运行时迁移到现代 C# 和 .NET 运行时开发...从 WinRT COM 接口转换为 Win32 COM 接口 - Qiita https://qiita.com/kumakamikoubou/items/245991bb7b247da1eea8 如果需要将...-9/ 它解释了 GetAlternateLookup API 的性能和独特的实现方法,该 API 已添加到 .NET 9 中的 Dictionary 和 HashSet 中。

    10210

    【深入浅出C#】章节 9: C#高级主题:LINQ查询和表达式

    定义: LINQ解决了上述问题,它是一种在编程语言中集成查询的方式。通过LINQ,开发者可以使用统一的语法在.NET语言(如C#)中执行查询操作,而无需了解底层的数据源类型和查询方式。...数据转换:可以将一种数据形式转换为另一种,如将数据库结果转换为对象集合。...3.2 如何创建和准备LINQ查询的数据源 创建和准备LINQ查询的数据源涉及从各种数据类型中获取数据,然后将其转换为适用于LINQ的数据类型,例如IEnumerable、IQueryable等。...LINQ to Entities / LINQ to SQL:使用ORM工具(如Entity Framework或LINQ to SQL)从数据库中获取数据。...从CSV文件中读取数据:使用开源库(如CsvHelper)将CSV文件中的数据转化为对象。 从数据库中读取数据:使用ADO.NET或ORM工具获取数据库中的数据。

    2.3K61

    C#3.0新增功能09 LINQ 标准查询运算符 04 运算

    Enumerable.ReverseQueryable.Reverse 查询表达式语法示例 主要排序示例 主要升序排序 下面的示例演示如何在 LINQ 查询中使用 orderby 子句按字符串长度对数组中的字符串进行升序排序...LINQ 查询中使用 orderby 子句对数组中的字符串执行主要和次要排序。...where Enumerable.WhereQueryable.Where 查询表达式语法示例 以下示例使用 where 子句从数组中筛选具有特定长度的字符串。...:执行分组联接 如何:执行内部联接 如何:执行左外部联接 如何:从多个源填充对象集合 (LINQ) (C#) 08 数据分组 分组是指将数据分到不同的组,使每组中的元素拥有公共的属性。...Queryable.AsQueryable Cast 将集合中的元素转换为指定类型。 使用显式类型化的范围变量。

    9.7K20
    领券