使用 Dictionary 代替 List.Where,提高速度

在C#中,有一List,有上万条数据项,每个数据项,又是一个类,List.Where去查找符合条件的类,然后计算,由于不断地调用List.Where,整个时间耗时约2分钟。不能忍受该时间。由于每调一次List.Where,就去循环一次,所以考虑使用Dictionary来代替,Where中判断条件,写作key,需要输出的值写入value,存储在Dictionary中,原来List.Where的地方换成Dictionary.ContainsKey。改造后,整个时间只需要几秒。...

C# 正则表达式使用示例-替换

C#正则表达式使用示例-匹配C#正则表达式使用示例-替换本示例是提取出字符串中的航班代码(假设为两个字母+四个数字),然后为其加上超链接,链接到其他网站,以查询航班信息。returnRegex.Replace(s,"([A-Z]{2}[0-9]{4})","<ahref="https://www.xxx.com/s?word=$1"target="_blank">$1</a>",RegexOptions.Multiline|RegexOptions.IgnoreCase); C#正则表达式使用示例-匹配C#正则表达式使用示例-替换...

C# var 使用细节

C# 的var 可以代表多种数据类型,但不代表想怎样就怎样。var 类型由编译器决定,一旦决定后就固定下来varm=0;//m是int类型m="abc";//这里是错误的近似类型转换也不行byteb=150;varv=b;//byte类型,如果是varv=0;则为int类型MessageBox.Show(v+":"+v.GetType().ToString());//150:System.Bytev+=b;MessageBox.Show(v+":"+v.GetType().ToString());//44:System.Byte以上可以看出,即使+b 超出了255(byte 的最大值,最小值为0,总共256 个数),它也没有扩大v 的数据类型,而是沿用byte 的特性:值-256(注意是256,不是255),得44。说明var 只是简化书写,编译器一旦决定类型后,就不会改变,上述代码将var 改为byte 没什么区别,因为var 并不改变特性,只是简化书写方式。...
代码星球 代码星球·2023-04-16

C# 中处理 JSON-使用 DataContractJsonSerializer

C#中处理JSON-使用DataContractJsonSerializerC#中处理JSON-属性应public、无参数构造函数应该有C#中处理JSON-字符串属性值转义C#中处理JSON-使用JavaScriptSerializer更简单C#中处理JSON-生成的JSON属性顺序是怎样的?添加引用如果是.NET 3.5 则需要添加两个引用(注意是引用,不是命名空间):System.ServiceModel.WebSystem.Runtime.Serialization如果是.NET4.0 则只需要添加一个引用:System.Runtime.Serialization核心类using System.Runtime.Serialization.Json;using System.IO;using System.Text;namespace Cftea{    public class JsonHelper    {&n...

接口中如何使用泛型

publicinterfaceIData<T>{TData{get;set;}stringToXml();}publicclassSiteData:IData<Site>{publicSiteData{get;set;}publicstringToXml(){}}以上是一种形式,其实我们还可以继续在class是用泛型。classSampleClass1<T>:IBaseInterface1<T>{}...
代码星球 代码星球·2023-04-16

口中,可使用 static 吗?

不可以,static不属于接口的一部分,如下代码是错误的:interfaceI输出{staticstringToHtml(intcustomerId);}...
代码星球 代码星球·2023-04-16

C# ToString-Decimal 如何使用 ToString 实现逗号分隔符、小数四舍五入

C#ToString-如何对Nullable的数字用ToString格式化C#ToString-自动识别百分比C#ToString-参数零长度字符串与null区别C#ToString-Decimal如何使用ToString实现逗号分隔符、小数四舍五入C#ToString-数字ToString四舍五入是哪种四舍五入?C#ToString-中#并不“待见”0C#ToString-小心“;”部分分隔符C#ToString-巧妙实现正号输出如将12345.6789显示为12,345.68,使用如下代码:decimal d = 12345.6789m;d.ToString("N");// 或者用自定义的格式 d.ToString("0,0.00");,但这个没有 "N" 好,因为如果纯小数遇到 "0,0.00" 前面也会显示两个 0,比如:00.00,这明显不符合我们日常习惯。如果想保留三位小数呢?d.ToString...

C# 正则表达式使用示例-匹配

C#正则表达式使用示例-匹配C#正则表达式使用示例-替换usingSystem.Text.RegularExpressions;//示例一Matchmatch=Regex.Match(str,">(.*?)<");match.Groups[0].Value;//匹配的整个字符串match.Groups[1].Value;//匹配的第一个括号中的内容//示例二//多个匹配foreach(MatchmatchinRegex.Matches(str,pattern)){match.Groups[0].Value;}C#正则表达式使用示例-匹配C#正则表达式使用示例-替换...

Visual Studio 类的使用与项目引用的关系

三个项目分别是:项目 A类,项目 B类,项目 C应用。若:B 继承自A,C使用B。则:C必须引用A、B,单引用 B是不够的。若:B使用 A作为属性类型,C使用B。则:C使用了该属性,就必须引用A、B,否则可以只引用B。...

VC# 中 ListView 图片使用-解决图片不能删除的问题

VC#中ListView图片使用-显示图片VC#中ListView图片使用-解决图片不能删除的问题如果照网上很多的介绍方法,要删除显示的图片时,在某些操作系统中会出现“文件被另一程序占用”的错误。网上也给了很多方法,但似乎都没有用。法一、Clone,不起作用using(Imageimg=Image.FromFile(filePaths[i])){imageList1.Images.Add(img.Clone());}法二、Clear、Dispose等,不起作用imageList1.Images.Clear();imageList1.Dispose();listView1.Items.Clear();listView1.LargeImageList=null;起作用的方法privateImageGetImage(stringfilePath){if(!File.Exists(filePath)){returnnull;}using(FileStreamfileStream=newFileStream(filePath,FileMode.Open)){byte[]bytes=newbyte...

VC#ListView 图片使用-显示图片

VC#ListView图片使用-显示图片VC#ListView图片使用解决图片不能删除的问题在ListView中显示图片,需要使用ListView、ImageList两个控件。一、设置ListView的View属性比如LargeIcon。二、装载图片imageList1.Images.Clear();imageList1.ColorDepth=ColorDepth.Depth24Bit;imageList1.ImageSize=newSize(120,90);listView1.LargeImageList=imageList1;listView1.Items.Clear();for(inti=0;i<filePaths.Length;i++){imageList1.Images.Add(GetImage(filePaths[i]));listView1.Items.Add(filePaths[i]);listView1.Items[i].ImageIndex=i;}GetImage是一个自定义的方法,具体见下一节,它的作用是解决图片无法删除的问题。VC#ListView...

接口方法、抽象方法、虚方法-可以使用静态吗?

接口方法、抽象方法、虚方法-可以使用静态吗?接口方法、抽象方法、虚方法-继承类方法返回值可以与基类或接口方法返回值不一样吗?在C#中,接口方法、抽象方法、虚方法可以是静态的吗?均不可以,如下写法是错误的。interfaceITree{staticstringGet(intid);}publicabstractclassTree{publicstaticabstractstringGet(intid);publicstaticvirtualstringGet(stringkey){//省略}}接口方法、抽象方法、虚方法-可以使用静态吗?接口方法、抽象方法、虚方法-继承类方法返回值可以与基类或接口方法返回值不一样吗?...

C# 泛型-介绍与使用

C#泛型-介绍与使用C#泛型-创建自己的泛型泛型是编程语言中的一种特性,它允许在强类型语言中,设计程序的时候不指定类型,而在使用的时候才明确类型。说得直白点:一个方法要支持int、decimal、string等类型的参数,用重载?那重载也太多了吧。用object类型的参数?那装箱拆箱或强制类型转换操作也太浪费资源了吧,并且在编译时可能无法进行类型检查。并且我还想用同一个方法返回不同的类型值。C#中用泛型可以解决这些问题。C#中泛型可用于类、结构、接口、委托,及其成员。使用泛型举例usingSystem.Collections.Generic;List<int>l1=newList<int>();List<string>l2=newList<string>();l1.Add(1);l2.Add("a");m=l1[0];a=l2[0];可以看出,List通过泛型,既方便地处理int类型,也方便地处理string类型。C#泛型-介绍与使用C#泛型-创建自己的泛型...
代码星球 代码星球·2023-04-16

多线程与异步-C# 如何使用线程

多线程与异步-什么是线程安全?多线程与异步-C#如何使用线程多线程与异步-关于让线程“等等”有关的几个方法多线程与异步-将参数传入线程的三种方法多线程与异步-C#异步调用多线程与异步-异步调用与多线程的区别多线程与异步-异步调用WebService多线程与异步-Task.Run、await、async以异步方式执行命名空间为System.Threading。Threadthread=newThread(newThreadStart(delegate(){//子线程代码}));thread.IsBackground=true;thread.Start();delegate这样用相当于匿名方法,也可以在外面另起一个方法,把方法名传给ThreadStart。但delegate这种形式可以方便地使用线程调用方的局部变量,很方便。IsBackground是指示是否为后台线程,默认为false。如果为false,则表示为前台线程,主线程等待所有的前台线程运行完才能结束。如果为true,则表示为后台线程,主线程退出时直接结束掉后台线程。多线程与异步-什么是线程安全?多线程与异步-C#如何使用线程多线...

C# 循环 Dictionary 及使用

循环Dictionary的各项可不像数组、List那样,做法如下:Dictionary<string,string>dic=newDictionary<string,string>();dic.Add("1","a");dic.Add("2","b");dic.Add("3","c");Dictionary<string,string>.Enumeratorem=dic.GetEnumerator();while(em.MoveNext()){Console.WriteLine(em.Current.Key+"-"+em.Current.Value);}另带说一下另一种常见的用法:if(dic.ContainsKey(key)){returndic[key];//直接用key索引取value}用foreach,非常方便。foreach(variteminitems){Response.Write(item.Key);Response.Write(item.Value);} ...
代码星球 代码星球·2023-04-16
首页上一页...23456...下一页尾页