C# 集合(COLLECTION) 技术教程文章

C# 可观察集合【代码】

1staticvoid Main()2 {3var data = new ObservableCollection<string>();4 data.CollectionChanged += Data_CollectionChanged;5 data.Add("One");6 data.Add("Two");7 data.Insert(1, "Three");8 data.Remove("One");910 } 1112staticvoid Data_CollectionChanged(object sender, System.Collections.Specialized.NotifyCollectionChangedEventArgs e) 13 { 14 Console.WriteLine("...

C#自定义集合类(一)【代码】【图】

.NET中提供了一种称为集合的类型,类似于数组,将一组类型化对象组合在一起,可通过遍历获取其中的每一个元素自定义集合需要通过实现System.Collections命名空间提供的集合接口实现,常用接口有:ICollection:定义所有非泛型集合的大小,枚举数和同步方法IComparer:公开一种比较两个对象的方法IDictionary:表示键/值对的非通用集合IDictionaryEnumerator:枚举非泛型字典的元素IEnumerable:公开枚举数,该枚举数支持在非泛型集合...

C#获取当前程序运行路径的方法集合

//获取当前进程的完整路径,包含文件名(进程名)。string str = this.GetType().Assembly.Location;result: X:\xxx\xxx\xxx.exe (.exe文件所在的目录+.exe文件名)//获取新的 Process 组件并将其与当前活动的进程关联的主模块的完整路径,包含文件名(进程名)。string str = System.Diagnostics.Process.GetCurrentProcess().MainModule.FileName;result: X:\xxx\xxx\xxx.exe (.exe文件所在的目录+.exe文件名)//获取和设置当前目录(即...

C#中IEnumerable、ICollection、IList、IQueryable 、IQueryable 之间的区别【代码】

一:一个简单的例子int[] myArray = { 1, 32, 43, 343 };IEnumerator myie = myArray.GetEnumerator();myie.Reset();while (myie.MoveNext()){int i = (int)myie.Current;Console.WriteLine("Value: {0}", i);} 通常我们这样会这样做: foreach (int item in myArray)Console.WriteLine(item.ToString()); 使用for和foreach来遍历数组,而对于上面的语法却用的很少,但是对foreach的具体来历还很模糊!】二:理解Foreach要实现fo...

C#中Dictionary泛型集合7种常见的用法

要使用Dictionary集合,需要导入C#泛型命名空间 System.Collections.Generic(程序集:mscorlib) Dictionary的描述1、从一组键(Key)到一组值(Value)的映射,每一个添加项都是由一个值及其相关连的键组成2、任何键都必须是唯一的3、键不能为空引用null(VB中的Nothing),若值为引用类型,则可以为空值4、Key和Value可以是任何类型(string,int,custom class 等) Dictionary常用用法:以 key 的类型为 int , value的类型为s...

C# 判断两个集合(List)是否相等【代码】

1.两个list如果有重复元素(如List1: a,b,a List2: b,b,a) 是无法通过包含关系来判断是否相等的.有两个办法,其一是两个List排序后再按顺序比较.另一个办法就是计算各元素的重复项再进行比较第一种方案劣势太明显,时间复杂度过大第二种以空间换时间,只需要遍历无需排序即可.///<summary>/// 判断两个集合是否是相等的(所有的元素及数量都相等)///</summary>///<typeparam name="T">集合元素类型</typeparam>///<param name="sourceC...

c#基础 特殊集合

一、栈: Stank,先进先出,一个一个赋值,一个一个取值,按照顺序。.count 取集合内元素的个数.push 将元素一个一个推入集合.pop 将元素一个一个弹出集合 .peek 查看集合中的一个元素.clear 清空集合 Stack st=new Stack();干草堆集合初始化 st.Push(0);推入 st.Pop();弹出 st.Clear();清空二、队列集合:Queue,先进先出,一个一个赋值,一个一个取值,按照顺序进行。.count 取集合内元素的个数...

2017-6-2 Linq 高级查询 (分页和组合查)、集合取交集【代码】【图】

1、linq分页和组合查询:(用项目实战来解释)<%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default.aspx.cs" Inherits="_Default" %><!DOCTYPE html><html xmlns="http://www.w3.org/1999/xhtml"> <head runat="server"> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"/><title></title> </head> <body><form id="form1" runat="server">用户名:<asp:TextBox ID="txt_uname" runat="server">...

[Wpf]在C#中添加 collectionViewSource

Products = newObservableCollection<Product>(products);ProductOptions = newObservableCollection<ProductOption>(options); ProductsView = CollectionViewSource.GetDefaultView(Products); ProductsView.GroupDescriptions.Add(newPropertyGroupDescription("Group")); ProductsView.SortDescriptions.Add( newSortDescription("Name", ListSortDirection.Ascending)); ProductOptionsView = CollectionViewSou...

30天C#基础巩固------集合,File(文件操作 ),Encoding处理字符集【代码】【图】

一:泛型 关于泛型我自己也不是很好的理解,但是具体的运用还是可以的,可以这样的理解,我们定义一个数组,但是不知道将来它是保存什么类型的值,很是矛盾,这个时候泛型就出现了,它可以解决这个场景,list<T> 以前这里是类型,前提是我们知道这里将来保存什么值,现在不知道了使用T(Type)来表示,将来什么类型的值都可以保存在里面。这个在集合,项目底层一些公共的接口,类之中使用的特别多。二:集合线型集合----List<T> ...

C#并行编程-并发集合【代码】【图】

原文:C#并行编程-并发集合菜鸟学习并行编程,参考《C#并行编程高级教程.PDF》,如有错误,欢迎指正。背景基于任务的程序设计、命令式数据并行和任务并行都要求能够支持并发更新的数组、列表和集合。在.NET Framework 4 以前,为了让共享的数组、列表和集合能够被多个线程更新,需要添加复杂的代码来同步这些更新操作。如您需要编写一个并行循环,这个循环以无序的方式向一个共享集合中添加元素,那么必须加入一个同步机制来保证这是...

C#集合排序【代码】【图】

1.对基础类型进行排序 调用Sort()方法,如果需要降序 1 List<int> intList = new List<int>() { 1, 2, 3 };2 intList.Sort();3foreach (int number in intList)4 {5 Console.WriteLine(number);6 }7 intList.Reverse();8foreach (int number in intList)9 { 10 Console.WriteLine(number); 11 } 12 Console.ReadKey...

C#集合2【代码】

对于ArrayList集合和Hashtable集合都会在取值和赋值的过程中往往都会发生拆装箱操作,会影响性能,所以一般都不很少用这两个集合。 但是这个好的东西没有会影响性能,肯定会有替代品的撒,那么就有了List泛型集合和Dictionary泛型字典——List泛型集合List泛型集合比ArrayList集合的优点就是定义了数据类型,从而不会再取值和赋值的过程中不容易产生拆箱和装箱的操作,其他的操作和ArrayList集合差不多语法: List<集合中需要存储的...

C#中遍历各类数据集合的方法总结【代码】

C#中遍历各类数据集合的方法总结: 1.枚举类型 //遍历枚举类型Sample的各个枚举名称 foreach (string sp in Enum.GetNames(typeof(Sample))) { ary.Add(sp); } //遍历枚举类型Sample的各个枚举值 foreach (string sp in Enum.GetValues(typeof(Sample))) { ary.Add(sp); } 2.遍历ArrayList(Queue、Stack) 这里以string为例,当然ArrayList中的元素可以是任何数据类型,遍历时须确认ArrayList中的元素都是同一数据类型。 //遍...

c# – 我是否必须使用CopyTo将自定义集合转换为可枚举的?【代码】

请考虑以下代码:var results = searcher.FindAll();SearchResult[] srList = new SearchResult[results.Count]; results.CopyTo(srList, 0);其中searcher.FindAll()返回System.DirectoryServices.SearchResultCollection. 我是否必须使用CopyTo将它们放入可枚举的中,然后我可以在Parallel.ForEach中使用它?如果是这样,为什么? 我使用System.Linq但没有弹出ToList方法. 谢谢大家!解决方法:您可以使用Cast<T>()将SearchResultCol...

编写高质量代码改善C#程序——使用泛型集合代替非泛型集合(建议20)

软件开发过程中,不可避免会用到集合,C#中的集合表现为数组和若干集合类。不管是数组还是集合类,它们都有各自的优缺点。如何使用好集合是我们在开发过程中必须掌握的技巧。不要小看这些技巧,一旦在开发中使用了错误的集合或针对集合的方法,应用程序将会背离你的预想而运行。 建议20:使用泛型集合代替非泛型集合 在建议1中我们知道,如果要让代码高效运行,应该尽量避免装箱和拆箱,以及尽量减少转型。很遗憾,在微软提供给我们...

C#中可观察集合中Count和Count()的区别是什么?

C#中可观察集合中Count和Count()的区别是什么?我已经注意到Visual Studio中的ObservableCollection类的类型我可以选择“.Count;”或“.Count();”.有什么不同?我想,不知道这会让人陷入困境.解决方法:Count()是LINQ扩展. Count是从Collection< T>继承的属性. Count()扩展的实现将知道您的对象正在实现ICollection< T>,因此将返回属性的结果.您可以使用任何一种,使用该属性的性能优势基本上不存在.

c# – 在使用ItemsSource并帮助使用组合框之前,WPF Items集合必须为空【代码】

<Grid><Grid.ColumnDefinitions><ColumnDefinition Width="1.5*"/><ColumnDefinition/></Grid.ColumnDefinitions> <Grid Grid.Column="0" Background="DarkCyan"><Grid.ColumnDefinitions><ColumnDefinition/><ColumnDefinition/></Grid.ColumnDefinitions><Grid.RowDefinitions><RowDefinition/><RowDefinition/></Grid.RowDefinitions> <ComboBox ItemsSource="{Binding Path=charList}" x:Name="comboBox" VerticalAlignmen...

c#-获取ICollection实现类的类型参数【代码】

我正在.net中编写一个小的序列化库.目标是要替代XmlSerialize,但更易于配置,并且不会使模型与属性混淆. 我面临的问题是我需要每个ICollection< T>的类型.我在遍历模型时发现.天真的方法是这样的:var theType=myModel.GetType().GetGenericArguments()[0];但这对于从ICollection< T>派生的类没有帮助.带有特定的Tpublic class MyClass:A,ICollection<B>{}我尝试通过反射获取界面var iCollectionInterface =o.GetType().GetInterfac...

C#数据表(DataTable)转键值对集合【代码】【图】

/// <summary> /// 数据表转键值对集合/// 把DataTable转成 List集合, 存每一行 /// 集合中放的是键值对字典,存每一列 ,键/值相同/// </summary> /// <param name="dt">数据表</param> /// <returns>哈希表数组</returns> public static List<Dictionary<string, object>> DataToList(DataTable dt){List<Dictionary<string, object>> list = new List<Dictionary<string, object>>();foreach (DataRow dr in dt.Rows){Dictionary...