06 2012 档案
摘要:在c#中可以遍历指定驱动器或指定目录下嵌套目录中的所有文件或者任意深度的文件。通过遍历可以检索string形式的目录名和文件名,也可以检索 System.IO.FileInfo 或 System.IO.DirectoryInfo 对象形式的其他信息。可以通过递归遍历和堆栈遍历两种方式实现目录遍历。递归遍历 递归算法简单,但嵌套树太深,可能会引起堆栈溢出异常。 /// <summary> /// 通过递归方式访问目录树 /// </summary> class RecursiveAccessDirectory { //声明并实例化一个字符串集合 ...
阅读全文
摘要:常用格式格式格式说明d月中的某一天。一位数的日期没有前导零。dd月中的某一天。一位数的日期有一个前导零。M月份数字。一位数的月份没有前导零。MM月份数字。一位数的月份有一个前导零。yy不包含纪元的年份。如果不包含纪元的年份小于 10,则显示具有前导零的年份。yyyy包括纪元的四位数的年份。h12 小时制的小时。一位数的小时数没有前导零。hh12 小时制的小时。一位数的小时数有前导零。H24 小时制的小时。一位数的小时数没有前导零。HH24 小时制的小时。一位数的小时数有前导零。m分钟。一位数的分钟数没有前导零。mm分钟。一位数的分钟数有一个前导零。s秒。一位数的秒数没有前导零。ss秒。一位数的
阅读全文
摘要:当有很多事件,大多数事件不会实现时,可以使用字典存储事件实例,这也是事件选择器的典型用法。 public delegate void EventHandler1(int i); public delegate void EventHandler2(string s); public class PropertyEvent { Dictionary<string, System.Delegate> eventTable; public PropertyEvent() { eventTable = new D...
阅读全文
摘要:在类中实现接口事件 可以在接口中声明事件,然后在类中实现该事件的引用。在为方法订阅事件时,可以订阅接口声明的事件,也可以订阅类中的事件。 class InterfaceEvent { static void Main(string[] args) { Shape s = new Shape(); IDrawingObject ido = s; //为HandlerShapeChanged方法订阅接口中声明的事件 ido.ShapeChanged += ...
阅读全文
摘要:(1)事件是特殊的委托,所以只可以在声明它的类中调用。在基类中声明一个事件,所以可以在基类中调用,而不能在派生类中直接调用。但有些情况下,需要在派生类中引用基类事件,实现方法是,在基类中定义一个受保护的方法引用事件,然后在派生类中重写基类方法,利用base关键字实现间接调用基类事件。(2)派生类调用基类事件。 class DerivedClassEvent { static void Main(string[] args) { Circle c = new Circle(10); Console.WriteLi...
阅读全文
摘要:(1)不生成事件数据。.NET Framework 类库中的所有事件均基于EventHandler委托。EventHandler是一个预定义委托,当不生成数据随事件一起发送时,该委托无需声明,因为它已在创建 C# 项目时包含的System命名空间中进行了声明。EventHandler委托定义如下: //sender 是引发事件的对象 //e 是不包含任何数据的事件数据对象。 public delegate void EventHandler(object sender, EventArgs e);不生成事件数据直接声明如下: public...
阅读全文
摘要:类或对象可以通过事件向其他类或对象通知发生的相关事情。 发送(或引发)事件的类称为“发行者”,接收(或处理)事件的类称为“订阅者”。一个简单事件实例 //发行者 public class Student { private string name; //定义一个带参委托 public delegate void DelegateRegisterFinish(string name); //定义一个事件 public event DelegateRegisterFinish EventRegisterFin...
阅读全文
摘要:委托声明和实例化 (1)通过与委托签名相同的方法的方法名声明实例化委托 //声明委托 public delegate void Del(string message); //与委托签名相同的方法 //签名相同即参数列表相同,返回值类型相同 public static void DelegateMethod(string message) { Console.WriteLine(message); } //通过与委托签名相同的方法实例化委托 Del ...
阅读全文
摘要:当页的大部分需要随请求动态更新,而页的某一小部分不需要随时更新,可把该部分放在用户控件中,然后设置该用户控件可缓存。设置用户控件缓存在用户控件文件(.ascx 文件)的顶部用@ OutputCache指令声明。<%@ OutputCache Duration="120" VaryByParam="None" %> 也可以在用户控件类上用PartialCaching特性声明。PartialCaching可以带多个参数。 //设置缓存时间为5秒 [PartialCaching(5)] public partial class CacheContr
阅读全文
摘要:Asp.net允许在输出缓存中缓存一个页的多个版本。 造成缓存多个版本的原因: (1)初始请求 (HTTP GET) 中的查询字符串。(2)回发时传递的控制值(HTTP POST 值)。(3)随请求传递的 HTTP 标头。(4)发出请求的浏览器的主版本号。(5)该页中的自定义字符串。 缓存页多个版本方式: (1)通过HttpCachePolicy类的属性和方法以编程方式。 (2)通过@ OutputCache指令的特性以声明方式。VaryByParam 特性可用来声明缓存输出因查询字符串而异。 VaryByControl 特性可用来声明缓存输出因控制值而异。VaryByHeader 特性可用.
阅读全文
摘要:1、Asp.net提供了CacheItemRemovedCallback委托来实现缓存移除时通知应用程序。在业务类中只需实现一个与CacheItemRemovedCallback委托相同签名的方法。2、可以通过创建缓存的Insert方法实现,也可以通过创建缓存的Add方法实现。3、定义回调方法的相同签名的委托如下public delegate void CacheItemRemovedCallback( string key, Object value, CacheItemRemovedReason reason) key:类型:System.String 从缓存中移除的键 ...
阅读全文
摘要:添加应用程序缓存项1、添加应用程序缓存项可以通过直接指定Cache对象的键值、Cache对象的Insert方法、Cache对象的Add方法实现。2、Cache对象的Insert方法有多个重载方法,通过重载可以指定创建缓存项的依赖,过期时间策略,优先级。3、如果使用Insert方法向缓存添加项,并且已经存在与现有项同名的项,则缓存中的现有项将被替换。4、Add方法没有重载方法;Add方法添加缓存项,将返回缓存中的对象;如果使用Add方法,缓存中已经存在与现有项同名的缓存项,则已存在的缓存项不会替换,并且不会引发异常。 /**********通过键和值直接设置项向缓存添加项*...
阅读全文
浙公网安备 33010602011771号