C#容器
集合接口和类型
接口 | 说明 |
---|---|
IEnumerable |
如果将foreach语句用于集合,就需要IEnumerable接口。这个接口定义了方法GetEnumerator(),它返回一个实现了IEnumerator接口的枚举 |
ICollection |
ICollection |
IList |
IList |
ISet |
ISet |
IDictionary<TKey, TValue> | IDictionary<TKey, TValue>接口由包含键和值的泛型集合类实现。使用这个接口可以访问所有的键和值,使用键类型的索引器可以访问某些项,还可以添加或删除某些项。 |
ILookup<TKey, TValue> | ILookup<TKey, TValue>接口类似于IDictionary<TKey, TValue>接口,实现该接口的集合有键和值,且可以通过一个键包含多个值 |
IComparer |
接口IComparer |
IEqualityComparer |
接口IEqualityComparer |
Array
Array提供一些方法,用于创建、处理、搜索数组并对数组进行排序,从而充当公共语言运行时中所有数组的基类。大小是固定的。
Array类是一个抽象类,所以不能使用构造函数来创建数组。但除了可以使用C#语法创建数组实例之外,还可以使用静态方法CreateInstance()创建数组。
Array 可以具有任何下限,但默认情况下它的下限为零。 使用 CreateInstance创建 Array 类的实例时,可以定义其他下限。多维 Array 每个维度可以具有不同的界限。 数组最多可以有32个维度。
数组大小限制为总计4000000000个元素,在任何给定维度中限制为0X7FEFFFFF 的最大索引(字节数组的0X7FFFFFC7 和单字节结构的数组)。
属性
方法 | 作用 |
---|---|
IsFixedSize | 获取一个值,该值指示 Array 是否具有固定大小。 |
IsReadOnly | 获取一个值,用于指示 Array 是否为只读。 |
IsSynchronized | 获取一个值,该值指示是否同步对 Array 的访问(确保线程安全)。 |
Length | 获取 Array 的所有维度中的元素总数。 |
LongLength | 获取一个 64 位整数,该整数表示 Array 的所有维数中元素的总数。 |
Rank | 获取 Array 的秩(维数)。 例如,一维数组返回 1,二维数组返回 2,依次类推。 |
SyncRoot | 获取用于同步对 Array 的访问的对象。 |
方法
方法 | 作用 |
---|---|
AsReadOnly |
返回指定数组的只读包装。 |
BinarySearch(Array, Int32, Int32, Object) | 使用由一维排序数组中每个元素和指定的值实现的 IComparable 接口,在该数组的一个元素范围内搜索值。 |
BinarySearch(Array, Int32, Int32, Object, IComparer) | 使用指定 IComparer 接口,在一维排序数组的某个元素范围中搜索值。 |
BinarySearch(Array, Object) | 使用由数组中每个元素和指定对象实现的 IComparable 接口,在整个一维排序数组中搜索特定元素。 |
BinarySearch(Array, Object, IComparer) | 使用指定 IComparer 接口,在整个一维排序数组中搜索值。 |
BinarySearch |
使用由 IComparable |
BinarySearch |
使用指定 IComparer |
BinarySearch |
使用由 IComparable |
BinarySearch |
使用指定 IComparer |
Clear(Array, Int32, Int32) | 将数组中的某个范围的元素设置为每个元素类型的默认值。 |
Clone() | 创建 Array 的浅表副本。 |
ConstrainedCopy(Array, Int32, Array, Int32, Int32) | 复制 Array 中的一系列元素(从指定的源索引开始),并将它们粘贴到另一 Array 中(从指定的目标索引开始)。保证在复制未成功完成的情况下撤消所有更改。 |
ConvertAll<TInput,TOutput>(TInput[], Converter<TInput,TOutput>) | 将一种类型的数组转换为另一种类型的数组。 |
Copy(Array, Array, Int32) | 从第一个元素开始复制 Array 中的一系列元素,将它们粘贴到另一 Array 中(从第一个元素开始)。 长度指定为 32 位整数。 |
Copy(Array, Array, Int64) | 从第一个元素开始复制 Array 中的一系列元素,将它们粘贴到另一 Array 中(从第一个元素开始)。 长度指定为 64 位整数。 |
Copy(Array, Int32, Array, Int32, Int32) | 复制 Array 中的一系列元素(从指定的源索引开始),并将它们粘贴到另一 Array 中(从指定的目标索引开始)。 长度和索引指定为 32 位整数。 |
Copy(Array, Int64, Array, Int64, Int64) | 复制 Array 中的一系列元素(从指定的源索引开始),并将它们粘贴到另一 Array 中(从指定的目标索引开始)。 长度和索引指定为 64 位整数。 |
CopyTo(Array, Int32) | 从指定的目标数组索引处开始,将当前一维数组的所有元素复制到指定的一维数组中。 索引指定为 32 位整数。 |
CopyTo(Array, Int64) | 从指定的目标数组索引处开始,将当前一维数组的所有元素复制到指定的一维数组中。 索引指定为 64 位整数。 |
CreateInstance(Type, Int32) | 创建使用从零开始的索引、具有指定 Array 和长度的一维 Type。 |
CreateInstance(Type, Int32, Int32) | 创建使用从零开始的索引、具有指定 Array 和维长的二维 Type。 |
CreateInstance(Type, Int32, Int32, Int32) | 创建使用从零开始的索引、具有指定 Array 和维长的三维 Type。 |
CreateInstance(Type, Int32[]) | 创建索引从零开始、具有指定 Array 和维长的多维 Type。 维的长度在一个 32 位整数数组中指定。 |
CreateInstance(Type, Int32[], Int32[]) | 创建具有指定下限、指定 Array 和维长的多维 Type。 |
CreateInstance(Type, Int64[]) | 创建索引从零开始、具有指定 Array 和维长的多维 Type。 维的长度在一个 64 位整数数组中指定。 |
Empty |
返回一个空数组。 |
Equals(Object) | 确定指定的对象是否等于当前对象。(继承自 Object) |
Exists |
确定指定数组包含的元素是否与指定谓词定义的条件匹配。 |
Find |
搜索与指定谓词所定义的条件相匹配的元素,并返回整个 Array 中的第一个匹配元素。 |
FindAll |
检索与指定谓词定义的条件匹配的所有元素。 |
FindIndex |
搜索与指定谓词所定义的条件相匹配的一个元素,并返回Array中从指定的索引开始、包含指定元素个数的元素范围内第一个匹配项的从零开始的索引。 |
FindIndex |
搜索与指定谓词所定义的条件相匹配的元素,并返回 Array 中从指定索引到最后一个元素的元素范围内第一个匹配项的从零开始的索引。 |
FindIndex |
搜索与指定谓词所定义的条件相匹配的元素,并返回整个 Array 中第一个匹配元素的从零开始的索引。 |
FindLast |
搜索与指定谓词所定义的条件相匹配的元素,并返回整个 Array 中的最后一个匹配元素。 |
FindLastIndex |
搜索与指定谓词所定义的条件相匹配的元素,并返回 Array 中包含指定元素个数、到指定索引结束的元素范围内最后一个匹配项的从零开始的索引。 |
FindLastIndex |
搜索与由指定谓词定义的条件相匹配的元素,并返回 Array 中从第一个元素到指定索引的元素范围内最后一个匹配项的从零开始的索引。 |
FindLastIndex |
搜索与指定谓词所定义的条件相匹配的元素,并返回整个 Array 中最后一个匹配元素的从零开始的索引。 |
ForEach |
对指定数组的每个元素执行指定操作。 |
GetEnumerator() | 返回 IEnumerator 的 Array。 |
GetHashCode() | 作为默认哈希函数。(继承自 Object) |
GetLength(Int32) | 获取一个 32 位整数,该整数表示 Array 的指定维中的元素数。 |
GetLongLength(Int32) | 获取一个 64 位整数,该整数表示 Array 的指定维中的元素数。 |
GetLowerBound(Int32) | 获取数组中指定维度第一个元素的索引。 |
GetType() | 获取当前实例的 Type。(继承自 Object) |
GetUpperBound(Int32) | 获取数组中指定维度最后一个元素的索引。 |
GetValue(Int32) | 获取一维 Array 中指定位置的值。 索引指定为 32 位整数。 |
GetValue(Int32, Int32) | 获取二维 Array 中指定位置的值。 索引指定为 32 位整数。 |
GetValue(Int32, Int32, Int32) | 获取三维 Array 中指定位置的值。 索引指定为 32 位整数。 |
GetValue(Int32[]) | 获取多维 Array 中指定位置的值。 索引指定为一个 32 位整数数组。 |
GetValue(Int64) | 获取一维 Array 中指定位置的值。 索引指定为 64 位整数。 |
GetValue(Int64, Int64) | 获取二维 Array 中指定位置的值。 索引指定为 64 位整数。 |
GetValue(Int64, Int64, Int64) | 获取三维 Array 中指定位置的值。 索引指定为 64 位整数。 |
GetValue(Int64[]) | 获取多维 Array 中指定位置的值。 索引指定为一个 64 位整数数组。 |
IndexOf(Array, Object) | 在一个一维数组中搜索指定对象,并返回其首个匹配项的索引。 |
IndexOf(Array, Object, Int32) | 在一个一维数组的一系列元素中搜索指定对象,然后返回其首个匹配项的索引。 该元素系列的范围为从指定索引到该数组结尾。 |
IndexOf(Array, Object, Int32, Int32) | 在一个一维数组的一系列元素中搜索指定对象,然后返回其首个匹配项的索引。 该元素系列的范围从指定数量的元素的指定索引开始。 |
IndexOf |
在一个一维数组中搜索指定对象,并返回其首个匹配项的索引。 |
IndexOf |
在一个一维数组的一系列元素中搜索指定对象,然后返回其首个匹配项的索引。 该元素系列的范围为从指定索引到该数组结尾。 |
IndexOf |
在一个一维数组的一系列元素中搜索指定对象,然后返回其首个匹配项的索引。 该元素系列的范围从指定数量的元素的指定索引开始。 |
Initialize() | 通过调用值类型的无参数构造函数,初始化值类型 Array 的每一个元素。 |
LastIndexOf(Array, Object) | 在整个一维 Array 中搜索指定的对象,并返回最后一个匹配项的索引。 |
LastIndexOf(Array, Object, Int32) | 搜索指定的对象,并返回一维 Array 中从第一个元素到指定索引的元素范围内最后一个匹配项的索引。 |
LastIndexOf(Array, Object, Int32, Int32) | 搜索指定的对象并返回一维 Array 中包含指定数目元素且在指定索引处结尾的元素范围内的最后一个匹配项的索引。 |
LastIndexOf |
搜索指定的对象,并返回整个 Array 中最后一个匹配项的索引。 |
LastIndexOf |
搜索指定的对象并返回 Array 中从第一个元素到指定索引的元素范围内最后一个匹配项的索引。 |
LastIndexOf |
搜索指定的对象,并返回 Array 中包含指定数目元素并在指定索引处结尾的元素范围内的最后一个匹配项的索引。 |
MemberwiseClone() | 创建当前 Object 的浅表副本。(继承自 Object) |
Resize |
将一维数组的元素数更改为指定的新大小。 |
Reverse(Array) | 反转整个一维 Array 中元素的顺序。 |
Reverse(Array, Int32, Int32) | 反转一维 Array 中元素子集的顺序。 |
SetValue(Object, Int32) | 将值设置为一维 Array 中指定位置的元素。 索引指定为 32 位整数。 |
SetValue(Object, Int32, Int32) | 将某值设置给二维 Array 中指定位置的元素。 索引指定为 32 位整数。 |
SetValue(Object, Int32, Int32, Int32) | 将值设置为三维 Array 中指定位置的元素。 索引指定为 32 位整数。 |
SetValue(Object, Int32[]) | 将值设置为多维 Array 中指定位置的元素。 索引指定为一个 32 位整数数组。 |
SetValue(Object, Int64) | 将值设置为一维 Array 中指定位置的元素。 索引指定为 64 位整数。 |
SetValue(Object, Int64, Int64) | 将某值设置给二维 Array 中指定位置的元素。 索引指定为 64 位整数。 |
SetValue(Object, Int64, Int64, Int64) | 将值设置为三维 Array 中指定位置的元素。 索引指定为 64 位整数。 |
SetValue(Object, Int64[]) | 将值设置为多维 Array 中指定位置的元素。 索引指定为一个 64 位整数数组。 |
Sort(Array) | 使用 Array 中每个元素的 IComparable 实现,对整个一维 Array 中的元素进行排序。 |
Sort(Array, Array) | 基于第一个 Array 中的关键字,使用每个关键字的 Array 实现,对两个一维 IComparable 对象(一个包含关键字,另一个包含对应的项)进行排序。 |
Sort(Array, Array, IComparer) | 基于第一个 Array 中的关键字,使用指定的 Array,对两个一维 IComparer 对象(一个包含关键字,另一个包含对应的项)进行排序。 |
Sort(Array, Array, Int32, Int32) | 基于第一个 Array 中的关键字,使用每个关键字的 Array 实现,对两个一维 IComparable 对象(一个包含关键字,另一个包含对应的项)的部分元素进行排序。 |
Sort(Array, Array, Int32, Int32, IComparer) | 基于第一个 Array 中的关键字,使用指定的 Array,对两个一维 IComparer 对象(一个包含关键字,另一个包含对应的项)的部分元素进行排序。 |
Sort(Array, IComparer) | 使用指定的 Array,对一维 IComparer 中的元素进行排序。 |
Sort(Array, Int32, Int32) | 使用 Array 中每个元素的 IComparable 实现,对一维 Array 中的部分元素进行排序。 |
Sort(Array, Int32, Int32, IComparer) | 使用指定的 Array,对一维 IComparer 中的部分元素进行排序。 |
Sort |
使用 Array 中每个元素的 IComparable |
Sort |
使用指定的 Array,对 Comparison |
Sort |
使用指定的 Array 泛型接口,对 IComparer |
Sort |
使用 Array 中每个元素的 IComparable |
Sort |
使用指定的 Array 泛型接口,对 IComparer |
Sort<TKey,TValue>(TKey[], TValue[]) | 基于第一个 Array 中的键,使用每个键的 Array 泛型接口实现,对一对 IComparable |
Sort<TKey,TValue>(TKey[], TValue[], IComparer |
基于第一个 Array 中的关键字,使用指定的 Array 泛型接口,对两个 IComparer |
Sort<TKey,TValue>(TKey[], TValue[], Int32, Int32) | 基于第一个 Array 中的键,使用每个键的 Array 泛型接口实现,对两个 IComparable |
Sort<TKey,TValue>(TKey[], TValue[], Int32, Int32, IComparer |
基于第一个 Array 中的关键字,使用指定的 Array 泛型接口,对两个 IComparer |
ToString() | 返回表示当前对象的字符串。(继承自 Object) |
TrueForAll |
确定数组中的每个元素是否都与指定谓词定义的条件匹配。 |
列表List
.NET Framework为动态列表提供了泛型类List
属性
属性 | 作用 |
---|---|
AllowDrop | 获取或设置一个值,该值指示此元素能否用作拖放操作的目标。(继承自 ContentElement) |
AreAnyTouchesCaptureds | 获取一个值,该值指示在此元素上是否至少捕获了一次触摸。(继承自 ContentElement) |
AreAnyTouchesCapturedWithin | 获取一个值,该值指示在此元素或其可视化树中的任何子元素上是否至少捕获了一次触摸。(继承自 ContentElement) |
AreAnyTouchesDirectlyOver | 获取一个值,该值指示在此元素上是否至少按下了一次触摸设备。(继承自 ContentElement) |
AreAnyTouchesOver | 获取一个值,该值指示在此元素或其可视化树中的任何子元素上是否至少按下了一次触摸设备。(继承自 ContentElement) |
Background | 获取或设置用于填充内容区域背景的 Brush。(继承自 TextElement) |
BindingGroup | 获取或设置用于该元素的 BindingGroup。(继承自 FrameworkContentElement) |
BorderBrush | 获取或设置绘制元素边框时使用的 Brush。(继承自 Block) |
BorderThickness | 获取或设置元素的边框粗细。(继承自 Block) |
BreakColumnBefore | 获取或设置一个值,该值指示当元素参与使用了分栏的内容呈现时,是否自动在此元素之前插入一个分栏符。(继承自 Block) |
BreakPageBefore | 获取或设置一个值,该值指示是否自动在此元素之前插入一个分页符。(继承自 Block) |
ClearFloaters | 获取或设置某个 Floater 元素所包含的任何 Block 元素的重新定位方向。(继承自 Block) |
CommandBindings | 获取与此元素关联的 CommandBinding 对象的集合。(继承自 ContentElement) |
ContentEnd | 获取表示元素中内容末尾的 TextPointer。(继承自 TextElement) |
ContentStart | 获取表示元素中内容开头的 TextPointer。(继承自 TextElement) |
ContextMenu | 获取或设置每当通过用户界面 (UI) 从此元素中请求上下文菜单时应该显示的上下文菜单元素。(继承自 FrameworkContentElement) |
Cursor | 获取或设置在鼠标指针位于此元素上时显示的光标。(继承自 FrameworkContentElement) |
DataContext | 获取或设置元素参与数据绑定时的数据上下文。(继承自 FrameworkContentElement) |
DefaultStyleKey | 获取或设置用于在主题中查找此控件的样式模板的键。(继承自 FrameworkContentElement) |
DependencyObjectType | 获取对此实例的 DependencyObjectType 类型进行包装的 CLR。(继承自 DependencyObject) |
Dispatcher | 获取与此 Dispatcher 关联的 DispatcherObject。(继承自 DispatcherObject) |
ElementEnd | 获取表示紧接元素末尾之后位置的 TextPointer。(继承自 TextElement) |
ElementStart | 获取表示紧邻元素开头之前位置的 TextPointer。(继承自 TextElement) |
FlowDirection | 获取或设置 Block 元素中内容流的相对方向。(继承自 Block) |
Focusable | 获取或设置一个值,该值指示元素能否得到焦点。(继承自 ContentElement) |
FocusVisualStyle | 获取或设置一个对象,该对象允许自定义此元素在捕获到键盘焦点时要应用于此元素的外观、效果或其他样式特征。(继承自 FrameworkContentElement) |
FontFamily | 获取或设置元素内容的首选顶级字体系列。(继承自 TextElement) |
FontSize | 获取或设置元素内容的字体大小。(继承自 TextElement) |
FontStretch | 获取或设置元素内容的字体拉伸特征。(继承自 TextElement) |
FontStyle | 获取或设置元素内容的字体样式。(继承自 TextElement) |
FontWeight | 获取或设置元素内容的顶级字体粗细。(继承自 TextElement) |
ForceCursor | 获取或设置一个值,该值指示此 FrameworkContentElement 是否应该强制用户界面 (UI) 按照此实例的 Cursor 属性所声明的方式呈现光标。(继承自 FrameworkContentElement) |
Foreground | 获取或设置要应用于元素内容的 Brush。(继承自 TextElement) |
HasAnimatedProperties | 获取一个值,该值指示此元素是否具有任何进行动画处理的属性。(继承自 ContentElement) |
InputBindings | 获取与此元素关联的输入绑定的集合。(继承自 ContentElement) |
InputScope | 获取或设置此 FrameworkContentElement 使用的输入的上下文。(继承自 FrameworkContentElement) |
IsEnabled | 获取或设置一个值,该值指示是否在用户界面 (UI) 中启用了此元素。(继承自 ContentElement) |
IsEnabledCore | 获取一个值,该值成为派生类中 IsEnabled 的返回值。(继承自 ContentElement) |
IsFocused | 获取一个值,该值确定此元素是否具有逻辑焦点。(继承自 ContentElement) |
IsHyphenationEnabled | 获取或设置一个值,该值指示是否启用文字的自动断字功能。(继承自 Block) |
IsInitialized | 获取一个值,该值指示是否已通过将此元素作为可扩展应用程序标记语言 (XAML) 加载或显式调用它的 EndInit() 方法初始化此元素。(继承自 FrameworkContentElement) |
IsInputMethodEnabled | 获取一个值,该值指示是否启用输入法系统(如 输入法编辑器 (IME))来处理此元素的输入。(继承自 ContentElement) |
IsKeyboardFocused | 获取一个值,该值表示此元素是否具有键盘焦点。(继承自 ContentElement) |
IsKeyboardFocusWithin | 获取一个值,该值指示键盘焦点是否位于元素或子元素内的任意位置。(继承自 ContentElement) |
IsLoaded | 获取一个值,该值指示是否已加载此元素以供显示。(继承自 FrameworkContentElement) |
IsMouseCaptured | 获取一个值,该值指示此元素是否捕获了鼠标。(继承自 ContentElement) |
IsMouseCaptureWithin | 获取一个值,该值确定此元素或其元素树中的子元素是否具有鼠标捕获。(继承自 ContentElement) |
IsMouseDirectlyOver | 获取一个值,该值指示在考虑元素组合的情况下,鼠标指针的位置是否对应于命中测试结果。(继承自 ContentElement) |
IsMouseOver | 获取一个值,该值指示鼠标指针是否位于此元素(包括可视子元素或其控件组合)上。(继承自 ContentElement) |
IsSealed | 获取一个值,该值指示此实例当前是否为密封的(只读)。(继承自 DependencyObject) |
IsStylusCaptured | 获取一个值,该值指示是否将触笔捕获到此元素。(继承自 ContentElement) |
IsStylusCaptureWithin | 获取一个值,该值确定此元素(包括子元素和控件组合)是否具有触笔捕获。(继承自 ContentElement) |
IsStylusDirectlyOver | 获取一个值,该值指示触笔的位置是否与考虑元素组合的命中测试结果相对应。(继承自 ContentElement) |
IsStylusOver | 获取一个值,该值指示触笔是否位于此元素(包括可视子元素)上。(继承自 ContentElement) |
Language | 获取或设置应用于单个元素的本地化/全球化语言信息。(继承自 FrameworkContentElement) |
LineHeight | 获取或设置各行内容的高度。(继承自 Block) |
LineStackingStrategy | 获取或设置为块级别流内容元素内的每行文本确定行框的方式。(继承自 Block) |
ListItems | 获取一个 ListItemCollection,其中包含组成 ListItem 的内容的 List 元素。 |
LogicalChildren | 获取一个可用于迭代该元素的逻辑子元素的枚举数。(继承自 TextElement) |
Margin | 获取或设置元素的边距粗细。(继承自 Block) |
MarkerOffset | 获取或设置每个 ListItem 元素内容与列表标记近边缘之间的所需距离。 |
MarkerStyle | 获取或设置 List 的标记样式。 |
Name | 获取或设置元素的标识名称。 该名称提供实例引用,以便编程代码隐藏(如事件处理程序代码)引用曾在 XAML 的分析过程中构造的元素。(继承自 FrameworkContentElement) |
NextBlock | 获取紧随当前 Block 元素之后的同级 Block 元素。(继承自 Block) |
OverridesDefaultStyle | 获取或设置一个值,该值指示此元素是否合并了主题样式的样式属性。(继承自 FrameworkContentElement) |
Padding | 获取或设置元素的填充厚度。(继承自 Block) |
Parent | 获取此元素的逻辑树中的父级。(继承自 FrameworkContentElement) |
PreviousBlock | 获取紧邻当前 Block 元素之前的同级 Block 元素。(继承自 Block) |
Resources 获取或设置当前本地定义的资源字典。(继承自 FrameworkContentElement) | |
SiblingBlocks | 获取一个 Block 元素的集合,这些元素是当前 Block 元素的同级元素。 |
StartIndex | 获取或设置用于标记有序列表中的项的起始索引。 |
Style | 获取或设置此元素要使用的样式。(继承自 FrameworkContentElement) |
Tag | 获取或设置任意对象值,该值可用于存储关于此元素的自定义信息。(继承自 FrameworkContentElement) |
TemplatedParent | 获取对此元素的模板父级的引用。 如果该元素不是通过模板创建的,则此属性无关。(继承自 FrameworkContentElement) |
TextAlignment | 获取或设置文本内容的水平对齐方式。(继承自 Block) |
TextEffects | 获取或设置应用于元素内容的文本效果集合。(继承自 TextElement) |
ToolTip | 获取或设置在用户界面 (UI) 中为此元素显示的工具提示对象。(继承自 FrameworkContentElement) |
TouchesCaptured | 获取在此元素上捕获的所有触摸设备。(继承自 ContentElement) |
TouchesCapturedWithin | 获取在此元素或其可视化树中的任何子元素上捕获的所有触摸设备。(继承自 ContentElement) |
TouchesDirectlyOver | 获取此元素上的所有触摸设备。(继承自 ContentElement) |
TouchesOver | 获取在此元素或其可视化树中的任何子元素上的所有触摸设备。(继承自 ContentElement) |
Typography | 获取该元素内容的当前有效的版式变体。(继承自 TextElement) |
方法
方法 | 作用 |
---|---|
Item( ) | 通过指定索引获取或设置元素。对于List类来说,它是一个索引器。 |
Add( ) | 在List中添加一个对象的公有方法 |
AddRange( ) | 公有方法,在List尾部添加实现了ICollection接口的多个元素 |
BinarySearch( ) | 重载的公有方法,用于在排序的List内使用二分查找来定位指定元素. |
Clear( ) | 在List内移除所有元素 |
Contains( ) | 测试一个元素是否在List内 |
CopyTo( ) | 重载的公有方法,把一个List拷贝到一维数组内 |
Exists( ) | 测试一个元素是否在List内 |
Find( ) | 查找并返回List内的出现的第一个匹配元素 |
FindAll( ) | 查找并返回List内的所有匹配元素 |
GetEnumerator( ) | 重载的公有方法,返回一个用于迭代List的枚举器 |
Getrange( ) | 拷贝指定范围的元素到新的List内 |
IndexOf( ) | 重载的公有方法,查找并返回每一个匹配元素的索引 |
Insert( ) | 在List内插入一个元素 |
InsertRange( ) | 在List内插入一组元素 |
LastIndexOf( ) | 重载的公有方法,,查找并返回最后一个匹配元素的索引 |
Remove( ) | 移除与指定元素匹配的第一个元素 |
RemoveAt( ) | 移除指定索引的元素 |
RemoveRange( ) | 移除指定范围的元素 |
Reverse( ) | 反转List内元素的顺序 |
Sort( ) | 对List内的元素进行排序 |
ToArray( ) | 把List内的元素拷贝到一个新的数组内 |
trimToSize( ) | 将容量设置为List中元素的实际数目 |
队列Queue
属性
属性 | 作用 |
---|---|
Count | 获取 Queue 中包含的元素数。 |
IsSynchronized | 获取一个值,该值指示是否同步对 Queue 的访问(线程安全)。 |
SyncRoot | 获取可用于同步对 Queue 的访问的对象。 |
方法
方法 | 作用 |
---|---|
Count | Count属性返回队列中的元素个数 |
Enqueue | Enqueue()方法在队列一端添加一个元素 |
Dequeue | Dequeue()方法在队列的头部读取和删除元素。如果在调用Dequeue()方法时,队列中不再有元素,就抛出一个InvalidOperationException类型的异常 |
Peek | Peek()方法从队列的头部读取一个元素,但不删除它 |
TrimExcess | TrimExcess()方法重新设置队列的容量。Dequeue()方法从队列中删除元素,但它不会重新设置队列的容量。要从队列的头部去除空元素,应使用TrimExcess()方法 |
栈Stack
属性
属性 | 作用 |
---|---|
Count | 获取 Stack 中包含的元素数。 |
IsSynchronized | 获取一个值,该值指示是否同步对 Stack 的访问(线程安全)。 |
SyncRoot | 获取可用于同步对 Stack 的访问的对象。 |
方法
方法 | 作用 |
---|---|
Count | 返回栈中的元素个数 |
Push | 在栈顶添加一个元素 |
Pop | 从栈顶删除一个元素,并返回该元素。如果栈是空的,就抛出InvalidOperationException异常 |
Peek | 返回栈顶的元素,但不删除它 |
Contains | 确定某个元素是否在栈中,如果是,就返回true |
链表LinkedList
LinkedList
属性
属性 | 作用 |
---|---|
Count | 获取 LinkedList |
First | 获取 LinkedList |
Last | 获取 LinkedList |
方法
方法 | 作用 |
---|---|
AddAfter(LinkedListNode |
在 LinkedList |
AddAfter(LinkedListNode |
在 LinkedList |
AddBefore(LinkedListNode |
在 LinkedList |
AddBefore(LinkedListNode |
在 LinkedList |
AddFirst(LinkedListNode |
在 LinkedList |
AddFirst(T) | 在 LinkedList |
AddLast(LinkedListNode |
在 LinkedList |
AddLast(T) | 在 LinkedList |
Clear() | 从 LinkedList |
Contains(T) | 确定某值是否在 LinkedList |
CopyTo(T[], Int32) | 从目标数组的指定索引处开始将整个 LinkedList |
Equals(Object) | 确定指定的对象是否等于当前对象。(继承自 Object) |
Find(T) | 查找包含指定值的第一个节点。 |
FindLast(T) | 查找包含指定值的最后一个节点。 |
GetEnumerator() | 返回循环访问 LinkedList |
GetHashCode() | 作为默认哈希函数。(继承自 Object) |
GetObjectData(SerializationInfo, StreamingContext) | 实现 ISerializable 接口,并返回序列化 LinkedList |
GetType() | 获取当前实例的 Type。(继承自 Object) |
MemberwiseClone() | 创建当前 Object 的浅表副本。(继承自 Object) |
OnDeserialization(Object) | 实现 ISerializable 接口,并在完成反序列化之后引发反序列化事件。 |
Remove(LinkedListNode |
从 LinkedList |
Remove(T) | 从 LinkedList |
RemoveFirst() | 移除位于 LinkedList |
RemoveLast() | 移除位于 LinkedList |
ToString() | 返回表示当前对象的字符串。(继承自 Object) |
有序列表SortedList
SortedList 类代表了一系列按照键来排序的键/值对,这些键值对可以通过键和索引来访问。
排序列表是数组和哈希表的组合。它包含一个可使用键或索引访问各项的列表。如果您使用索引访问各项,则它是一个动态数组(ArrayList),如果您使用键访问各项,则它是一个哈希表(Hashtable)。集合中的各项总是按键值排序。
属性
属性 | 作用 |
---|---|
Capacityz | 获取或设置 SortedList 的容量。 |
Count | 获取 SortedList 中的元素个数。 |
IsFixedSize | 获取一个值,表示 SortedList 是否具有固定大小。 |
IsReadOnly | 获取一个值,表示 SortedList 是否只读。 |
Item | 获取或设置与 SortedList 中指定的键相关的值。 |
Keys | 获取 SortedList 中的键。 |
Values | 获取 SortedList 中的值。 |
方法
方法 | 作用 |
---|---|
Add(Object, Object) | 将带有指定键和值的元素添加到 SortedList 对象。 |
Clear() | 从 SortedList 对象中移除所有元素。 |
Clone() | 创建 SortedList 对象的浅表副本。 |
Contains(Object) | 确定 SortedList 对象是否包含特定键。 |
ContainsKey(Object) | 确定 SortedList 对象是否包含特定键。 |
ContainsValue(Object) | 确定 SortedList 对象是否包含特定值。 |
CopyTo(Array, Int32) | 从指定数组索引开始将 SortedList 元素复制到一维 Array 对象中。 |
Equals(Object) | 确定指定的对象是否等于当前对象。(继承自 Object) |
GetByIndex(Int32) | 获取 SortedList 对象的指定索引处的值。 |
GetEnumerator() | 返回一个循环访问 IDictionaryEnumerator 对象的 SortedList 对象。 |
GetHashCode() | 作为默认哈希函数。(继承自 Object) |
GetKey(Int32) | 获取 SortedList 对象的指定索引处的键。 |
GetKeyList() | 获取 SortedList 对象中的键。 |
GetType() | 获取当前实例的 Type。(继承自 Object) |
GetValueList() | 获取 SortedList 对象中的值。 |
IndexOfKey(Object) | 返回 SortedList 对象中指定键的从零开始的索引。 |
IndexOfValue(Object) | 返回指定的值在 SortedList 对象中第一个匹配项的从零开始的索引。 |
MemberwiseClone() | 创建当前 Object 的浅表副本。(继承自 Object) |
Remove(Object) | 从 SortedList 对象中移除带有指定键的元素。 |
RemoveAt(Int32) | 移除 SortedList 对象的指定索引处的元素。 |
SetByIndex(Int32, Object) | 替换 SortedList 对象中指定索引处的值。 |
Synchronized(SortedList) | 返回 SortedList 对象的同步(线程安全)包装。 |
ToString() | 返回表示当前对象的字符串。(继承自 Object) |
TrimToSize() | 将容量设置为 SortedList 对象中元素的实际数目。 |
字典Dictionary
字典表示一种非常复杂的数据结构,这种数据结构允许按照某个键来访问元素。字典也称为映射或散列表。字典的主要特性是能根据键快速查找值。也可以自由添加和删除元素,这有点像List
属性
属性 | 作用 |
---|---|
Comparer | 获取用于确定字典中的键是否相等的 IEqualityComparer |
Count | 获取包含在 Dictionary<TKey,TValue> 中的键/值对的数目。 |
Item[TKey] | 获取或设置与指定的键关联的值。 |
Keys | 获得一个包含 Dictionary<TKey,TValue> 中的键的集合。 |
Values | 获得一个包含 Dictionary<TKey,TValue> 中的值的集合。 |
方法
方法 | 作用 |
---|---|
Add(TKey, TValue) | 将指定的键和值添加到字典中。 |
Clear() | 将所有键和值从 Dictionary<TKey,TValue> 中移除。 |
ContainsKey(TKey) | 确定是否 Dictionary<TKey,TValue> 包含指定键。 |
ContainsValue(TValue) | 确定 Dictionary<TKey,TValue> 是否包含特定值。 |
Equals(Object) | 确定指定的对象是否等于当前对象。(继承自 Object) |
GetEnumerator() | 返回循环访问 Dictionary<TKey,TValue> 的枚举数。 |
GetHashCode() | 作为默认哈希函数。(继承自 Object) |
GetObjectData(SerializationInfo, StreamingContext) | 实现 ISerializable 接口,并返回序列化 Dictionary<TKey,TValue> 实例所需的数据。 |
GetType() | 获取当前实例的 Type。(继承自 Object) |
MemberwiseClone() | 创建当前 Object 的浅表副本。(继承自 Object) |
OnDeserialization(Object) | 实现 ISerializable 接口,并在完成反序列化之后引发反序列化事件。 |
Remove(TKey) | 从 Dictionary<TKey,TValue> 中移除所指定的键的值。 |
ToString() | 返回表示当前对象的字符串。(继承自 Object) |
TryGetValue(TKey, TValue) | 获取与指定键关联的值。 |
有序字典SortedDictionary
SortedDictionary<TKey, TValue>和SortedList<TKey, TValue>的功能类似。但因为SortedList<TKey, TValue>实现为一个基于数组的列表,而SortedDictionary<TKey, TValue>类实现为一个字典,所以它们有不同的特征。
● SortedList<TKey, TValue>使用的内存比SortedDictionary<TKey, TValue>少。
● SortedDictionary<TKey, TValue>的元素插入和删除操作比较快。
● 在用已排好序的数据填充集合时,若不需要修改容量,SortedList<TKey, TValue>就比较快。
集Set
包含不重复元素的集合称为“集(set)”。.NET Framework包含两个集(HashSet
HashSet属性
属性 | 作用 |
---|---|
Comparer | 获取用于确定集中的值是否相等的 IEqualityComparer |
Count | 获取集中包含的元素数。 |
HashSet属性
方法 | 作用 |
---|---|
Add(T) | 将指定的元素添加到集中。 |
Clear() | 从 HashSet |
Contains(T) | 确定 HashSet |
CopyTo(T[]) | 将 HashSet |
CopyTo(T[], Int32) | 从指定数组索引处开始,将 HashSet |
CopyTo(T[], Int32, Int32) | 从指定数组索引处开始,将 HashSet |
CreateSetComparer() | 返回 IEqualityComparer 对象,该对象可用于对 HashSet |
Equals(Object) | 确定指定的对象是否等于当前对象。(继承自 Object) |
ExceptWith(IEnumerable |
从当前 HashSet |
GetEnumerator() | 返回循环访问 HashSet |
GetHashCode() | 作为默认哈希函数。(继承自 Object) |
GetObjectData(SerializationInfo, StreamingContext) | 实现 ISerializable 接口并返回序列化 HashSet |
GetType() | 获取当前实例的 Type。(继承自 Object) |
IntersectWith(IEnumerable |
修改当前的 HashSet |
IsProperSubsetOf(IEnumerable |
确定 HashSet |
IsProperSupersetOf(IEnumerable |
确定 HashSet |
IsSubsetOf(IEnumerable |
确定 HashSet |
IsSupersetOf(IEnumerable |
确定 HashSet |
MemberwiseClone() | 创建当前 Object 的浅表副本。(继承自 Object) |
OnDeserialization(Object) | 实现 ISerializable 接口,并在完成反序列化之后引发反序列化事件。 |
Overlaps(IEnumerable |
确定是否当前的 HashSet |
Remove(T) | 从 HashSet |
RemoveWhere(Predicate |
从 HashSet |
SetEquals(IEnumerable |
确定是否 HashSet |
SymmetricExceptWith(IEnumerable |
修改当前 HashSet |
ToString() | 返回表示当前对象的字符串。(继承自 Object) |
TrimExcess() | 将 HashSet |
TryGetValue(T, T) | 在集内搜索给定的值,并返回所找到的相等值(如果有)。 |
UnionWith(IEnumerable |
修改当前 HashSet |
性能
许多集合类都提供了相同的功能,例如,SortedList类与SortedDictionary类的功能几乎完全相同。但是,其性能常常有很大区别。一个集合使用的内存少,另一个集合的元素检索速度快。在MSDN文档中,集合的方法常常有性能提示,给出了以大写O记号表示的操作时间:
O(1)
,O(log n)
, O(n)
O(1)表示无论集合中有多少数据项,这个操作需要的时间都不变。例如,ArrayList类的Add()方法就具有O(1)行为。无论列表中有多少个元素,在列表末尾添加一个新元素的时间都相同。Count属性会给出元素个数,所以很容易找到列表末尾。
O(n)表示对于集合执行一个操作需要的时间在最坏情况时是N。如果需要重新给集合分配内存,ArrayList类的Add()方法就是一个O(n)操作。改变容量,需要复制列表,复制的时间随元素的增加而线性增加。
O(log n)表示操作需要的时间随集合中元素的增加而增加,但每个元素需要增加的时间不是线性的,而是呈对数曲线。在集合中执行插入操作时,SortedDictionary<TKey, TValue>集合类具有O(log n)行为,而SortedList<TKey, TValue>集合类具有O(n)行为。这里SortedDictionary <TKey, TValue>集合类要快得多,因为它在树型结构中插入元素的效率比列表高得多。
并发集合
不变的集合很容易在多个线程中使用,因为它们不能改变。如果希望使用应在多个线程中改变的集合,.NET在名称空间System.Collections.Concurrent中提供了几个线程安全的集合类。线程安全的集合可防止多个线程以相互冲突的方式访问集合。
为了对集合进行线程安全的访问,定义了IProducerConsumerCollection
● ConcurrentQueue
● ConcurrentStack
● ConcurrentBag
● ConcurrentDictionary<TKey, TValue> ——这是一个线程安全的键值集合。TryAdd()、TryGetValue()、TryRemove()和TryUpdate()方法以非阻塞的方式访问成员。因为元素基于键和值,所以ConcurrentDictionary<TKey, TValue>没有实现IProducerConsumerCollection
● BlockingCollection
ConcurrentXXX集合是线程安全的,如果某个动作不适用于线程的当前状态,它们就返回false。在继续之前,总是需要确认添加或提取元素是否成功。不能相信集合会完成任务。
BlockingCollection