C#基础学习:深入理解什么是委托

深入理解什么是委托 委托就是函数指针,先定义了一个委托,然后将它的实例指向某个特定的方法(函数),通过这个委托的实例就可以调用其方法。 1、要想使得委托可以工作,必须有定义好的方法(函数),这是一种方式; 2、可以通过匿名方法来作为委托参数的一个代码块。 匿名方法其实就是在实例化委托的时候给委托定义了代码块,可以实现某些功能,再调用委托的时候就可以直接使用这些代码块了。 注意:匿名方法不能跳转到外部,外部也不能跳转到匿名方法;匿名方法内部不能访问安全代码,也不能在外部使用ref和out参数。 深入理解集合 在C#中应该能够灵活地使用数组列表、字典和集合,这样才可以获取程序的最佳性能。最主要的有下面这些:集合;数组列表;栈;队列;有序列表;字典。集合大都可以通过语句来实现访问: forreach(string item in Items) { writeline(item); } 1、数组列表(ArrayList) 常用的方法Add,Insert,RemoveAt,AddRange。 2、Stack类 适合于处理应用程序使用完后就删除的临时数据项,先进后出。 3、Queue类 和Stack差不多,只不过是先进先出。 4、SortedList类 在使用SortedList类的时候,每一项都会指定一个用于引用改项的标识键。可以通过GetKeyList()和GetValueList()来获取键和值。 5、字典和散列 字典和散列总是会跟HashTable联系起来。 深入理解泛型 引入泛型最大的好处就是避免大量的装箱和拆箱操作,而且能够简化大量代码。

May 21, 2009

C#常用函数列表(二)

11、string str=Request.QueryString[“变量”]; 用超链接传送变量。如在任一页中建超链接href=“Edit.aspx?fbid=“23"点击.在Edit.aspx页中取值:String str=Request.QueryString[“fdid”]; 12、DOC对象.CreateElement(“新建节点名”); 创建XML文档新节点 13、父节点.AppendChild(子节点); 将新建的子节点加到XML文档父节点下 14、 父节点.RemoveChild(节点); 删除节点 15、Response Response.Write(“字串”);Response.Write(变量);向页面输出。Response.Redirect(“URL地址”); 跳转到URL指定的页面 16、char.IsWhiteSpce(字串变量,位数)–逻辑型 查指定位置是否空字符;如:string str=“中国人"Response.Write(char.IsWhiteSpace(str,2));//结果为:True, 第一个字符是0位,2是第三个字符。 17、char.IsPunctuation(‘字符’) –逻辑型 查字符是否是标点符号如:Response.Write(char.IsPunctuation(‘A’)); //返回:False 18、(int)‘字符’ 把字符转为数字,查代码点,注意是单引号。如:Response.Write((int)‘中’); //结果为中字的代码:20013 19、(char)代码 把数字转为字符,查代码代表的字符。如:Response.Write((char)22269); //返回“国”字。 20、 Trim() 清除字串前后空格

May 21, 2009

C#最常用函数

以下是我们在开发过程中最为常用的一些函数: 1、DateTime 数字型 System.DateTime currentTime=new System.DateTime(); 1.1 取当前年月日时分秒 currentTime=System.DateTime.Now; 1.2 取当前年 int 年=currentTime.Year; 1.3 取当前月 int 月=currentTime.Month; 1.4 取当前日 int 日=currentTime.Day; 1.5 取当前时 int 时=currentTime.Hour; 1.6 取当前分 int 分=currentTime.Minute; 1.7 取当前秒 int 秒=currentTime.Second; 1.8 取当前毫秒 int 毫秒=currentTime.Millisecond; (变量可用中文) 2、Int32.Parse(变量) Int32.Parse(“常量”) 字符型转换 转为32位数字型 3、 变量.ToString() 字符型转换 转为字符串 12345.ToString(“n”); //生成 12,345.00 12345.ToString(“C”); //生成 ¥12,345.00 12345.ToString(“e”); //生成 1.234500e+004 12345.ToString(“f4”); //生成 12345.0000 12345.ToString(“x”); //生成 3039 (16进制) 12345.ToString(“p”); //生成 1,234,500.00% 4、变量.Length 数字型 取字串长度: 如: string str=“中国” int Len = str.Length ; //Len是自定义变量, str是求测的字串的变量名 5、System.Text.Encoding.Default.GetBytes(变量) 字码转换 转为比特码 如:byte[] bytStr = System.Text.Encoding.Default.GetBytes(str); 然后可得到比特长度: len = bytStr.Length; 6、System.Text.StringBuilder("") 字符串相加,(+号是不是也一样?) 如:System.Text.StringBuilder sb = new System.Text.StringBuilder(""); sb.Append(“中华”); sb.Append(“人民”); sb.Append(“共和国”); 7、变量.Substring(参数1,参数2); 截取字串的一部分,参数1为左起始位数,参数2为截取几位。 如:string s1 = str.Substring(0,2); 8、String user_IP=Request.ServerVariables[“REMOTE_ADDR”].ToString(); 取远程用户IP地址 9、穿过代理服务器取远程用户真实IP地址: if(Request.ServerVariables[“HTTP_VIA”]!=null){ string user_IP=Request.ServerVariables[“HTTP_X_FORWARDED_FOR”].ToString(); }else{ string user_IP=Request.ServerVariables[“REMOTE_ADDR”].ToString(); } 10、 Session[“变量”]; 存取Session值; 如,赋值: Session[“username”]=“小布什” 取值: Object objName=Session[“username”]; String strName=objName.ToString(); 清空: Session.RemoveAll();

May 21, 2009

委托用法,C#源代码

1、委托的概念 委托是C#一个非常重要的概念,也是很有用的,因为委托和事件结合起来使用可以完成很多功能(委托是事件的基础),而且可以通过委托来实现函数的匿名方法(通过将委托与命名方法或匿名方法关联,可以实例化委托)。 C#的委托类似于 C++ 中的函数指针;但是,委托是类型安全和可靠的。 2、委托的用法 委托类型声明的格式如下: public delegate void TestDelegate(string message);delegate 关键字用于声明一个引用类型,该引用类型可用于封装命名方法或匿名方法。 为了与命名方法一起使用,委托必须用具有可接受签名的方法进行实例化。有关方法签名中允许的方差度的更多信息,请参见委托中的协变和逆变。为了与匿名方法一起使用,委托和与之关联的代码必须一起声明。 3、实现代码 下面用C#代码来说明如何使用委托(参考自微软msdn): using System; // Declare delegate -- defines required signature: delegate void SampleDelegate(string message); class MainClass { // Regular method that matches signature: static void SampleDelegateMethod(string message) { Console.WriteLine(message); } static void Main() { // Instantiate delegate with named method: SampleDelegate d1 = SampleDelegateMethod; // Instantiate delegate with anonymous method: SampleDelegate d2 = delegate(string message) { Console.WriteLine(message); }; // Invoke delegate d1: d1("Hello"); // Invoke delegate d2: d2(" World"); } }

May 21, 2009