随笔分类 - C#
摘要:阅读目录开始hidden-inputQueryStringCookieApplicationStateViewState,ControlStateSessionProfile各种状态管理的对比与总结会话状态的选择改变开发方式,发现新方法由于HTTP协议的无状态特性,导致在ASP.NET编程中,每个请求都会在服务端从头到执行一次管线过程, 对于ASP.NET页面来说,Page对象都会重新创建,所有控件以及内容都会重新生成, 因此,如果希望上一次的页面状态能够在后续页面中保留,则必需引入状态管理功能。ASP.NET为了实现状态管理功能,提供了8种方法,可帮助我们在页面之间或者整个用户会话期间保留状
阅读全文
摘要:,语言集成查询(Language INtegrated Query)是一组用于c#和Visual Basic语言的扩展。它允许编写C#或者Visual Basic代码以查询数据库相同的方式操作内存数据。从技术角度而言,LINQ定义了大约40个查询操作符,如select、from、in、where以及order by(C#中)。使用这些操作符可以编写查询语句。不过,这些查询还可以基于很多类型的数据,每个数据类型都需要一个单独的LINQ类型。看图,不解释
阅读全文
摘要:泛型在我理解就好比是一个袋子,可以装下任何东西.我们当然不希望用这个袋子又装好吃的又要装垃圾.打一个更形象的比方,去超市买一包饼干,当你结帐的时候服务员会给你一个袋子装这包饼干.但是对于我们来说饼干与饼干的包装袋都装到了这个大袋子里,而饼干是我们所需要的,包装袋子就是垃圾.这时就会引出一个概念,"装箱、拆箱".将包装袋装饼干的过程就叫"装箱",而我们拆包装吃饼干的过程叫"拆箱".显然这对于吃饼干来...
阅读全文
摘要:虚方法和抽象方法都可以供派生类重写,它们之间有什么区别呢?1. 虚方法必须有实现部分,抽象方法没有提供实现部分,抽象方法是一种强制派生类覆盖的方法,否则派生类将不能被实例化。如://抽象方法publicabstractclassAnimal{publicabstractvoidSleep();publicabstractvoidEat();}//虚方法publicclassAnimal{publi...
阅读全文
摘要:引言 在一些比较重要的应用场景中,通过网络传递数据需要进行加密以保证安全。本文将简单地介绍了加密解密的一些概念,以及相关的数字签名、证书,最后介绍了如何在.NET中对数据进行对称加密和解密。 加密和解密 说到加密,可能大家最熟悉的就是MD5了,记得几年前我刚开始接触Web编程的时候,研究的一个ASP论坛程序,它的用户密码就是采用的MD5进行加密。MD5实际上只是一种散列运算,或者可以称为单向的加密...
阅读全文
摘要:一. Base64的编码规则 Base64编码的思想是是采用64个基本的ASCII码字符对数据进行重新编码。它将需要编码的数据拆分成字节数组。以3个字节为一组。按顺序排列24 位数据,再把这24位数据分成4组,即每组6位。再在每组的的最高位前补两个0凑足一个字节。这样就把一个3字节为一组的数据重新编码成了4个字节。当所要编码的数据的字节数不是3的整倍数,也就是说在分组时最后一组不够3个字节。这时...
阅读全文
摘要:很多非泛型集合类都有对应的泛型集合类,下面是常用的非泛型集合类以及对应的泛型集合类: 非泛型集合类 泛型集合类 ArrayList List HashTable DIctionary Queue Queue Stack Stack SortedList SortedList 我们用的比较多的非泛型集合类主要有 ArrayList类 和 HashTable类。我们经常用HashTabl...
阅读全文
摘要:我们都知道,const和static readonly的确很像:通过类名而不是对象名进行访问,在程序中只读等等。 在多数情况下可以混用。二者本质的区别在于,const的值是在编译期间确定的,因此只能在声明时通过常量表达式指定其值。而 static readonly是在运行时计算出其值的,所以还可以通过静态构造函数来赋值。明白了这个本质区别,我们就不难看出下面的语句中static readonly和...
阅读全文
摘要:1.继承: Code Code highlighting produced by Actipro CodeHighlighter (freeware)http://www.CodeHighlighter.com/--> public class Animal { } public class Bird:Animal ...
阅读全文
摘要:介绍 在任何应用系统开发中,异常管理对开发人员来说都是一个关键领域。作为一个开发人员,你应该采用一种合适的、能让你编写健壮且高质量代码的异常管理策略。如果使用得当,异常管理将是一个很强大的概念而且使你的开发工作变的很容易。然而,一个不合适的异常处理将会使你的应用系统性能降低。 在你钻研这些之前,要先搞清楚异常管理是什么,这点很重要。一般来说异常就表示“打破系统预定的假设”。“异常”和“错误”是...
阅读全文
摘要:如果在为方法声明参数时未使用 ref 或 out,则该参数可以具有关联的值。可以在方法中更改该值,但当控制传递回调用过程时,不会保留更改的值。通过使用方法参数关键字,可以更改这种行为。 params params 关键字可以指定在参数数目可变处采用参数的方法参数。 在方法声明中的 params 关键字之后不允许任何其他参数,并且在方法声明中只允许一个 params 关键字。 示例...
阅读全文
摘要:base base 关键字用于从派生类中访问基类的成员: 调用基类上已被其他方法重写的方法。 指定创建派生类实例时应调用的基类构造函数。 基类访问只能在构造函数、实例方法或实例属性访问器中进行。 示例: 在派生类中调用基类方法。 // base 关键字 // 访问基类成员 using Sys...
阅读全文
摘要:当我们的程序顺序执行的时候,如果我们调用了一个很耗时的方法,那么应用程序会使当前的线程处于阻塞状态,直到方法的调用完成再继续执行。这样的方法调用被认为是同步的。如果这个方法的调用可能花费的时间会更长,而我们不想立即取得方法所返回的结果,或者我们根本就不让方法返回结果的话,这种等待是没有必要的。那我们就可以利用异步委托来把我们的方法做成异步的调用。 异步调用并不是要减少线程的开销, 它的主要目的是让...
阅读全文
摘要:一、 ASCII码 我们知道,在计算机内部,所有的信息最终都表示为一个二进制的字符串。每一个二进制位(bit)有0和1两种状态,因此八个二进制位就可以组合出256种状态,这被称为一个字节(byte)。也就是说,一个字节一共可以用来表示256种不同的状态,每一个状态对应一个符号,就是256个符号,从00000000到11111111。 上个世纪60年代,美国制定了一套字符编码,对英语字符与二进制位之...
阅读全文
摘要:索引函数是对属性的进一步扩展,它能够以数组的方式来控制对多个变量的读和写。说的通俗点,就是隔山打牛,你也可以直接去打牛,但是可能不好控制力度,索引器就是实现这个效果的.下面看看实现的代码: Code Code highlighting produced by Actipro CodeHighlighter (freeware)http://www.CodeHighlighter.com/-->...
阅读全文
摘要:日期转化一 为了达到不同的显示效果有时,我们需要对时间进行转化,默认格式为:2007-01-03 14:33:34 ,要转化为其他格式,要用到DateTime.ToString的方法(String, IFormatProvider),如下所示: using System; using System.Globalization; String format="D"; DateTime date=D...
阅读全文
摘要:事件有很多,比如说鼠标的事件:MouserMove,MouserDown等,键盘的事件:KeyUp,KeyDown,KeyPress。 有事件,就会有对事件进行处理的方法,而事件和处理方法之间是怎么联系起来的呢?委托就是他们中间的桥梁,事件发生时,委托会知道,然后将事件传递给处理方法,处理方法进行相应处理。 比如在WinForm中最常见的是按钮的Click事件,它是这样委托的:this.butto...
阅读全文
摘要:委托是一种安全地封装方法的类型,它与 C 和 C++ 中的函数指针类似。与 C 中的函数指针不同,委托是面向对象的、类型安全的和保险的。委托的类型由委托的名称定义。下面的示例声明了一个名为 Del 的委托,该委托可以封装一个采用字符串作为参数并返回 void 的方法。 构造委托对象时,通常提供委托将包装的方法的名称或使用匿名方法。实例化委托后,委托将把对它进行的方法调用传递给方法。调用方传递给委托...
阅读全文
摘要:反射就是在运行的时候发现对象的相关信息。根据这些信息可以动态的执行对象的方法以及获取对象的属性所储存的值。 1,首先我们先建立一个类库工程MyDll,并新建一个类ReflectTest 代码如下: using System; namespace MyDll { /**//// /// ReflectTest 的摘要说明。 /// //接口 ...
阅读全文
摘要:序列化”可被定义为将对象的状态存储到存储媒介中的过程。在此过程中,对象的公共字段和私有字段以及类的名称(包括包含该类的程序集)都被转换为字节流,然后写入数据流。在以后“反序列化”该对象时,创建原始对象的精确复本。 一、为什么要选择序列化 一个原因是将对象的状态保持在存储媒体中,以便可以在以后重新创建精确的副本; 另一个原因是通过值将对象从一个应用程序域发送到另一个应用程序域中。 ...
阅读全文