04 2011 档案

摘要:引言如果你看过了 C#中的委托和事件 一文,我想你对委托和事件已经有了一个基本的认识。但那些远不是委托和事件的全部内容,还有很多的地方没有涉及。本文将讨论委托和事件一些更为细节的问题,包括一些大家常问到的问题,以及事件访问器、异常处理、超时处理和异步方法调用等内容。为什么要使用事件而不是委托变量?在 C#中的委托和事件 中,我提出了两个为什么在类型中使用事件向外部提供方法注册,而不是直接使用委托变量的原因。主要是从封装性和易用性上去考虑,但是还漏掉了一点,事件应该由事件发布者触发,而不应该由客户端(客户程序)来触发。这句话是什么意思呢?请看下面的范例:NOTE:注意这里术语的变化,当我们单独谈 阅读全文
posted @ 2011-04-28 16:40 Kingdom_0 阅读(229) 评论(0) 推荐(0) 编辑
摘要:引言1.理解多线程2. 线程异步与线程同步3.创建多线程应用程序3.1通过System.Threading命名空间的类构建3.1.1异步调用线程3.1.2并发问题3.1.3线程同步3.2通过委托构建多线程应用程序3.2.1线程异步3.2.2线程同步3.3BackgroundWorker组件4.总结引言 随着双核、四核等多核处理器的推广,多核处理器或超线程单核处理器的计算机已很常见,基于多核处理的编程技术也开始受到程序员们普遍关注。这其中一个重要的方面就是构建多线程应用程序(因为不使用多线程的话,开发人员就不能充分发挥多核计算机的强大性能)。本文针对的是构建基于单核计算机的多线程应用程序,目的在 阅读全文
posted @ 2011-04-28 13:56 Kingdom_0 阅读(7014) 评论(1) 推荐(2) 编辑
摘要:一、C# Thread类的基本用法通过System.Threading.Thread类可以开始新的线程,并在线程堆栈中运行静态或实例方法。可以通过Thread类的的构造方法传递一个无参数,并且不返回值(返回void)的委托(ThreadStart),这个委托的定义如下:[ComVisibleAttribute(true)]public delegate void ThreadStart()我们可以通过如下的方法来建立并运行一个线程。usingSystem; usingSystem.Collections.Generic; usingSystem.Linq; usingSystem.Text; 阅读全文
posted @ 2011-04-28 13:51 Kingdom_0 阅读(493) 评论(0) 推荐(0) 编辑
摘要:Regex是从字符窗中查找匹配字符串的应用类。通过Regex,编程人员能够非常方便的从一段数据中提取自己所需要的数据信息。举一个简单的例子,让大家对Regex有个大概的了解:Regex regex = new Regex(@"d+"); Match m = regex.Match("fox 9212gold"); Console.WriteLine(m.Value.ToString()); 结果很明显,regex为我们找到了字符串”fox 9212gold”中的数字字符串,输出结果为”9212” .对Regex有了一个基本的概念之后,我需要告诉你一个非常 阅读全文
posted @ 2011-04-26 16:44 Kingdom_0 阅读(716) 评论(0) 推荐(0) 编辑
摘要:当使用大量的正则表达式进行静态方法调用时。 默认情况下,正则表达式引擎将缓存 15 个最近使用的静态正则表达式。 如果应用程序使用的静态正则表达式超过 15 个,则必须重新编译某些正则表达式。 为了防止执行此类重新编译,您可以将 Regex.CacheSize 属性增加到适当的值。 当应用程序使用先前已编译的正则表达式实例化新的 Regex 对象时。 例如,下面的代码定义一个正则表达式,以定位某个文本流的各个行中重复的单词。 虽然本示例使用一个正则表达式,但它将实例化一个新的 Regex 对象来处理每行文本。 这将导致在每次循环迭代时都重新编译此正则表达式。 复制 StreamReader . 阅读全文
posted @ 2011-04-26 16:37 Kingdom_0 阅读(589) 评论(0) 推荐(0) 编辑
摘要:学习工具:下载一个例子string value="123";Regex re=new Regex(^[0-9]{1,2}$);if(!re.IsMatch(value)){ }上面的代码用来判断字符串以数字开头和结尾,并且最多有2位。Regex re=new Regex(^[0-9]{1,2}$);解释:这句:声明一个新的Regex, ^表示:匹配字符串开始字符$表示:匹配结尾字符。[0-9]:匹配的数据类型。和\d异曲同工。{1,2}:匹配数据重复的次数。在这里表示出现了一次或两次详解:一:Regex语法(1)^、$匹配数据:1234567;Regex: ^[0-9]结果 阅读全文
posted @ 2011-04-26 14:55 Kingdom_0 阅读(1782) 评论(0) 推荐(0) 编辑
摘要://今天DateTime.Now.Date.ToShortDateString();//昨天,就是今天的日期减一DateTime.Now.AddDays(-1).ToShortDateString();//明天,同理,加一DateTime.Now.AddDays(1).ToShortDateString();//本周(要知道本周的第一天就得先知道今天是星期几,从而得知本周的第一天就是几天前的那一天,要注意的是这里的每一周是从周日始至周六止DateTime.Now.AddDays(Convert.ToDouble((0 - Convert.ToInt16(DateTime.Now.DayOfWe 阅读全文
posted @ 2011-04-25 18:00 Kingdom_0 阅读(301) 评论(0) 推荐(0) 编辑
摘要:C#的Trace类提供一组帮助跟踪代码执行情况的方法和属性,使用是非常方便的,具体到输出到什么地方,取决于TraceListener的类型,系统自带了三种类型:System.Diagnostics.DefaultTraceListenerSystem.Diagnostics.EventLogTraceListenerSystem.Diagnostics.TextWriterTraceListener有时候我们想自己定义输出类型,比如输出到数据库,输出到socket等等,这就需要自定义TraceListener,这个非常容易,只需要简单的继承System.Diagnostics.TraceLis 阅读全文
posted @ 2011-04-25 17:32 Kingdom_0 阅读(2146) 评论(1) 推荐(0) 编辑
摘要:1、Queue定义System.Collections.Queue类表示对象的先进先出集合,存储在 Queue(队列) 中的对象在一端插入,从另一端移除。2.优点1、能对集合进行顺序处理(先进先出)。2、能接受null值,并且允许重复的元素。3. Queue的构造器构造器函数注释Queue ()初始化 Queue 类的新实例,该实例为空,具有默认初始容量(32)并使用默认增长因子(2.0)。Queue (ICollection)初始化 Queue 类的新实例,该实例包含从指定集合复制的元素,具有与所复制的元素数相同的初始容量并使用默认增长因子。Queue (Int32)初始化 Queue 类的 阅读全文
posted @ 2011-04-25 15:55 Kingdom_0 阅读(589) 评论(0) 推荐(0) 编辑
摘要:1、Stack定义System.Collections.Stack类表示对象的简单的后进先出非泛型集合。2.优点1、后进先出的集合。2、Stack 能接受空引用作为有效值并且允许重复的元素3. Stack的构造器构造器函数注释Stack ()初始化 Stack 类的新实例,该实例为空并且具有默认初始容量。Stack (ICollection)初始化 Stack 类的新实例,该实例包含从指定集合复制的元素并且具有与所复制的元素数相同的初始容量。Stack (Int32)初始化 Stack 类的新实例,该实例为空并且具有指定的初始容量或默认初始容量(这两个容量中的较大者)。4、Stack的属性属性 阅读全文
posted @ 2011-04-25 15:42 Kingdom_0 阅读(563) 评论(0) 推荐(0) 编辑
摘要:FielStream类操作的是字节和字节数组,而stream类操作的是字符数据。字符数据易于使用,但是有些操作,比如随机文件访问(访问文件中间某点的数据),就必须由FileStream对象执行。FielStream类维护内部文件指针,该指针指向文件中进行下一次读写操作的位置。FileStream只能处理原始字节(raw byte),处理原始字节的功能使用FileStream类可以用于处理任何数据文件。通过读取字节数据,FileStream对像可以用于读取图像和声音。代价是FileStream类不能将数据直接读入字符串此指针可以修改用Seek方法,它有两个参数:第一个参数:规定文件指针以字节为参 阅读全文
posted @ 2011-04-25 11:11 Kingdom_0 阅读(4722) 评论(0) 推荐(2) 编辑
摘要:System.IO.File类和System.IO.FileInfo类主要提供有关文件的各种操作,在使用时需要引用System.IO命名空间。下面通过程序实例来介绍其主要属性和方法。(1) 文件打开方法:File.Open () 该方法的声明如下: public static FileStream Open(string path,FileMode mode) 下面的代码打开存放在c:\tempuploads目录下名称为newFile.txt文件,并在该文件中写入hello。privatevoidOpenFile(){ FileStream.TextFile=File.Open(@" 阅读全文
posted @ 2011-04-23 16:09 Kingdom_0 阅读(868) 评论(0) 推荐(1) 编辑
摘要:public static void displayEnvironment() { IDictionary dict = Environment.GetEnvironmentVariables(); Console.WriteLine("There are {0} environment variables",dict.Count); string[] keys = new string[dict.Count]; string[] values = new string[dict.Count]; int ix = 0; foreach (DictionaryEntry de 阅读全文
posted @ 2011-04-23 10:13 Kingdom_0 阅读(310) 评论(0) 推荐(0) 编辑
摘要:管理位值的压缩数组,该值表示为布尔值,其中true表示位是打开的(1),false表示位是关闭的(0) using System; using System.Collections; public class SamplesBitArray { public static void Main() { // Creates and initializes several BitArrays. BitArray myBA1 = new BitArray( 5 ); BitArray myBA2 = new BitArray( 5, false ); byte[] myBytes = new byt 阅读全文
posted @ 2011-04-22 15:19 Kingdom_0 阅读(2271) 评论(0) 推荐(0) 编辑
摘要:提供了一个简单结构,该结构以32位内存存储布尔和小数值 对于内部使用的布尔值和小整数,BitVector32 比 BitArray 更有效。 BitArray 可以按需要无限地扩大,但它有内存和性能方面的系统开销,这是类实例所要求的。 相比之下,BitVector32 只使用 32 位。 BitVector32 结构可以设置成包含小整数的若干节或包含布尔值的若干位标志,但不能同时包含两者。 BitVector32.Section 是 BitVector32 中的窗口,且由最小数量的连续位构成,连续位可以包含 CreateSection 中指定的最大值。 例如,带有最大值 1 的节只由一个位构成 阅读全文
posted @ 2011-04-22 15:16 Kingdom_0 阅读(2664) 评论(0) 推荐(0) 编辑
摘要:1:比较和排序的概念 比较:两个实体类之间按>,=,<进行比较。 排序:在集合类中,对集合类中的实体进行排序。排序基于的算法基于实体类提供的比较函数。 基本型别都提供了默认的比较算法,如string提供了按字母进行比较,int提供了按整数大小进行比较。2:IComparable和IComparer 当我们创建了自己的实体类,如Student,默认想要对其按照年龄进行排序,则需要为实体类实现IComparable接口。 class Student:IComparable { public string Name { get; set; } public int Age { get; 阅读全文
posted @ 2011-04-22 09:34 Kingdom_0 阅读(463) 评论(0) 推荐(0) 编辑
摘要:有一道这样的题:写出c#中new关键字的三种用法,思前想后挖空心思也只想出了两种用法,回来查了下msdn,还真是有第三种用法:用于在泛型声明中约束可能用作类型参数的参数的类型,这是在Framework2.0中定义泛行时才会使用到的,自己对c#2.0中的支持还只是粗通皮毛,怪不得累死somany脑细胞也没能想不出这第三种来!三种用法如下:在C#中,new关键字可用作运算符、修饰符或约束。1)new运算符:用于创建对象和调用构造函数。这种大家都比较熟悉,没什么好说的了。2)new修饰符:在用作修饰符时,new关键字可以显式隐藏从基类继承的成员。3)new约束:用于在泛型声明中约束可能用作类型参数的 阅读全文
posted @ 2011-04-21 14:02 Kingdom_0 阅读(28122) 评论(3) 推荐(1) 编辑
摘要:本文以Sql Server2000为例,示例数据库为china,表为test,来说明以C#中使用sql存储过程的方法。一、test表的创建sql语句:create table test55(uid int identity(1,1),class1 varchar(20),class2 varchar(20),uname varchar(20),birth smalldatetime,meno varchar(50))alter table test55add constraint primary_id primary key(uid)二、创建一个有输入、输出、返回值参数的存储过程:create 阅读全文
posted @ 2011-04-21 07:55 Kingdom_0 阅读(534) 评论(0) 推荐(0) 编辑
摘要:1. 打开新的窗口并传送参数: 传送参数: response.write("<script>window.open('*.aspx?id="+this.DropDownList1.SelectIndex+"&id1="+...+"')</script>") 接收参数: string a = Request.QueryString("id"); string b = Request.QueryString("id1"); 2.为按钮添加对话框 Button1.Attribu 阅读全文
posted @ 2011-04-20 09:30 Kingdom_0 阅读(166) 评论(0) 推荐(0) 编辑
摘要:C# 中的委托和事件引言委托 和 事件在 .Net Framework中的应用非常广泛,然而,较好地理解委托和事件对很多接触C#时间不长的人来说并不容易。它们就像是一道槛儿,过了这个槛的人,觉得真是太容易了,而没有过去的人每次见到委托和事件就觉得心里别(biè)得慌,混身不自在。本文中,我将通过两个范例由浅入深地讲述什么是委托、为什么要使用委托、事件的由来、.Net Framework中的委托和事件、委托和事件对Observer设计模式的意义,对它们的中间代码也做了讨论。将方法作为方法的参数我们先不管这个标题如何的绕口,也不管委托究竟是个什么东西,来看下面这两个最简单的方法,它们不过 阅读全文
posted @ 2011-04-19 15:30 Kingdom_0 阅读(704) 评论(0) 推荐(0) 编辑
摘要:1.将String转换成另外一种类型:object val = (object)Convert.ChangeType((new DataTable()).Compute("4", string.Empty), typeof(object));2.static类型构造函数,const,readonly,enum: 它是在任何静态变量被调用或者类对象被初始化的时候自动调用。const类型变量由类名直接调用。本质上是一种read-only型的static变量。readOnly是一种instance类型的成员.它使得我们得以在确保"只读访问"的前提下,把obje 阅读全文
posted @ 2011-04-13 14:31 Kingdom_0 阅读(182) 评论(0) 推荐(0) 编辑
摘要:/// <summary> /// 马赛克效果 ///原理:确定图像的随机位置点和确定马赛克块的大小,然后马赛克块图像覆盖随机点即可. /// </summary> /// <param name="m_Iimage"></param> /// <param name="val">分割成val*val像素的小区块</param> public Image MaSaiKe(Image m_PreImage , int val) { Bitmap MyBitmap = new Bitma 阅读全文
posted @ 2011-04-12 07:49 Kingdom_0 阅读(1199) 评论(0) 推荐(0) 编辑
摘要:-------------------该文摘自于匿名教程总结,希望对初学js的同学有帮助,因为它解决了我学习js的众多迷惑。。。函数是进行模块化程序设计的基础,编写复杂的Ajax应用程序,必须对函数有更深入的了解。 javascript中的函数不同于其他的语言,每个函数都是作为一个对象被维护和运行的。通过函数对象的性质,可以很方便的将一个函数赋值给一个变量或者将函数作为参数传递。在继续讲述之前,先看一下函数的使用语法:以下是引用片段:function func1(…){…} var func2=function(…){…}; var func3=function func4(…){…}; va 阅读全文
posted @ 2011-04-11 16:39 Kingdom_0 阅读(165) 评论(0) 推荐(0) 编辑
摘要:实现一次加载和点击节点后动态加载树。废话不多说,直接上代码。数据库表:(Oracle)view plaincopy to clipboardprint?createtableComOrg(ComOrg_IDintegerprimarykey,ComOrg_Namenvarchar2(20)notnull,ComOrg_ParentIdintegernotnull);insertintoComOrg(ComOrg_ID,Comorg_Name,Comorg_Parentid)values(1,'MyCompany',0);insertintoComOrg(ComOrg_ID,Co 阅读全文
posted @ 2011-04-11 10:06 Kingdom_0 阅读(1899) 评论(0) 推荐(1) 编辑
摘要:现实中很多项目中页面都会有复杂的操作,增删改、分页已经很普遍了。还有数据验证、编辑指定列等功能。现把所有功能都写在一个页面中,方便需要的朋友参考。示例用到的相关组件:Extjs版本:3.2.1Newtonsoft.Json.dll (把数据序列化为Json格式)文件可在Newtonsoft官网去下载http://james.newtonking.com/AjaxPro.2.dll (直接与页面后台通过Ajax方式交互)官网地址:http://ajaxpro.codeplex.comOracle.DataAccess.dll 由Oracle安装文件中获取,提供对Oracle数据库的操作相关。示例 阅读全文
posted @ 2011-04-11 10:04 Kingdom_0 阅读(5015) 评论(1) 推荐(0) 编辑

点击右上角即可分享
微信分享提示