随笔分类 -  C#杂七杂八

~
摘要:在WPF中Invoke和BeginInvoke和Winform中的是差不多的,只是一个用Control的一个用Dispatcher的。而Invoke和BeginInvoke的区别嘛 就是一个是同步的一个是异步的,也就是一个需要等待一个不需要= =就比如一个最简单区别的例子://这个输出123 private void button1_Click(object sender, RoutedEventArgs e) { textblock.Text += "1"; this.Dispatcher.Invoke(new InvokeDeleg... 阅读全文
posted @ 2013-11-03 22:41 世界很灰暗 阅读(1887) 评论(1) 推荐(0)
摘要:当在每次上传或者下载的时候,我只想进行一个任务的,我用的是WebClient类,但是我又不想用同步的方法UploadFile、DownloadFile,因为WebClient这个类的同步方法没有UploadProgressChanged、UploadFileCompleted这两个事件,这样就不能简单的设置进度条啦。所以还是应该在异步事件中把他当做成同步的做咯,所以要用Queue这个东西,放进队列,然后一个一个的再放出来,方法嘛如下所示(以上传为例): private Queue filePaths = new Queue(); WebClient myWebClient = nu... 阅读全文
posted @ 2013-10-09 00:04 世界很灰暗 阅读(1861) 评论(0) 推荐(0)
摘要:SQLite是一款轻型的数据库,在一些数据量不太大的程序中,它暂用的资源非常低。支持很多操作系统和许多语言,所以还是很方便的。在C#中,要用的话可以通过网站来下载或者在VS中通过NuGet来下载。这个就不多说了,当你下载并且装完数据库后,就可以直接使用它,下面就先看下最基础的数据库操作:首先就是关于创建数据库和创建表:private static void Create() { if (!Directory.Exists(AppDomain.CurrentDomain.BaseDirectory + "Data")) { Directory.... 阅读全文
posted @ 2013-08-06 14:44 世界很灰暗 阅读(366) 评论(0) 推荐(0)
摘要:IEnumerable接口和IEnumerator是两个比较重要的接口,当实现了该接口,就可以在Foreach中使用。下面来看看这两个东西。IEnumerable是一个声明式的接口,声明实现该接口的Class是Enumerable的,但并没有说明如何实现枚举器,IEnumerable的接口成员只有一个,那就是GetEnumerator方法,它返回对象的枚举数。public interface IEnumerable { IEnumerator GetEnumerator(); }IEnumerator是一个实现式的接口,IEnumerator的接口包括三个成员函数:Curr... 阅读全文
posted @ 2013-02-25 14:55 世界很灰暗 阅读(323) 评论(0) 推荐(0)
摘要:首先,索引器是撒呢,根据MSDN的描述:索引器允许类或结构的实例就像数组一样进行索引。索引器类似于属性,不同之处在于它们的访问器采用参数。我们可以把索引想象成提供获取和设置类的多个数据成员的属性。通过提供索引在许多可能的数据成员中进行选择。索引的声明和属性差不多:View Code ReturnType this [Type param1,...] { get{...} set{...} } 使用索引时还有点注意事项:索引是实例成员。不能声明为static。索引器上的get访问器具有与索引器相同的形参... 阅读全文
posted @ 2013-02-25 00:27 世界很灰暗 阅读(146) 评论(0) 推荐(0)
摘要:本菜鸟刚刚看书看到递归了,发现解决某些问题的时候还是挺好的,所以把它弄出来学习一下。递归其实就是除了可以调用其他的方法,它还能调用它自己。它把大的问题转化为小的问题,再转化到最小解,然后再返回往上调用,得出解。同时,我在别的BLOG中看到几点要素和注意事项把它给拉过来记录一下:(1)递归操作的每两步都是有紧密的联系,如在“递归”的“归操作时”,前一次的输出就是后一次的输入。(2)必须要有结束递归的条件。(3)递归必须要有一个递归出口。(4)大规模的问题不适合递归,因为需要进栈出栈比较频繁,效率比较低,还容易造成栈溢出。 比如最最常用的阶乘的问题,如果数字小的话就可以用递归来解决: in... 阅读全文
posted @ 2013-02-07 15:16 世界很灰暗 阅读(1316) 评论(1) 推荐(1)
摘要:首先是定义,MSDN上是这样写的:确定可以如何使用自定义属性类。AttributeUsage是一个可应用于自定义属性定义的属性,自定义属性定义来控制如何应用新属性。 它可以通过标记的方式来修饰各种成员。下面有一个简单的例子:View Code class Program { static void Main(string[] args) { Type t=typeof(Test); var student=t.GetCustomAttributes(typeof(StudentAttribute),false); ... 阅读全文
posted @ 2012-11-07 17:17 世界很灰暗 阅读(1225) 评论(0) 推荐(0)
摘要:首先需要去下载Newtonsoft.Json.dll这个东西,这个是一个很好的功能很强大的dll。可以用TOOLS中的Libary Package Manager中的Package Manager Console输入Install-Package Newtonsoft.Json来直接下载。装完后就可以添加引用:using Newtonsoft.Json;using Newtonsoft.Json.Converters; 然后是一个最简单的字符串的系列化反序列化应用:View Code class Program { static void Main(string[] arg... 阅读全文
posted @ 2012-10-28 23:31 世界很灰暗 阅读(701) 评论(3) 推荐(0)
摘要:若在C#中想比较两个字符串,但是两个字符串中又夹杂着许多的符号,如果单纯的想比较字母或数字,则不能使用最简单的Compare来比较他们。一般的常规方法是比较不出的。只能使用CultureInfo中的CompareInfo来比较。然后有一个CompareOptions.IgnoreSymbols选项可以供选择。同时在引用中也要加入System.Globalization才能使用这个比较。若为0则表示相等。View Code using System;using System.Collections.Generic;using System.Linq;using System.Text;usi.. 阅读全文
posted @ 2012-07-12 14:02 世界很灰暗 阅读(753) 评论(0) 推荐(0)
摘要:HtmlAgilityPack是一款将HTML转换为XML,再通过XPATH来实现网页抓取的动态链接库。在解析DOM前先需要加载HTML的网页,可以用HtmlDocument类,此类封装了该方法。就拿博客园首页的各个文章的抓取为例,简单的加载为:WebClient wc = new WebClient(); using (MemoryStream ms = new MemoryStream(wc.DownloadData(@"http://www.cnblogs.com"))) { HtmlDocument doc = new HtmlDoc... 阅读全文
posted @ 2012-05-09 11:18 世界很灰暗 阅读(616) 评论(0) 推荐(1)