
c#
文章平均质量分 59
MsdnWoo
热爱自由,向往高薪
展开
-
抽象类
抽象类的使用 1>使用abstract关键字标记方法 2>抽象方法在父类中不能有任何实现,所以抽象方法没有方法体。 3>抽象成员必须写在抽象类中。 4>抽象类是不能被实例化的。不能直接new一个抽象类的对象。 5>抽象类中既可以有抽象成员,也可以有实例成员。 6>抽象成员不能是私有的。原创 2015-12-28 21:01:29 · 295 阅读 · 0 评论 -
C#序列化,反序列化(Serialize,Deserialize)
如果要保存运行程序过程的数据要么保存到数据库中,要么新建一个普通的文件,然后把数据保存进去.但是这两者有个缺点就是,不能把原有数据的结构也保存进去.比如一个类中的字段值保存进去后再读取出来必须再解析下才行.序列化技术让你省去了解析的过程.保存后再读取时直接得到一个class序列化的方式有三种:BinaryFormatter,SoapFormatter,XmlSerializer1.转载 2016-03-26 16:59:34 · 584 阅读 · 0 评论 -
c#接口
在编程中,我们经常会用到接口,那什么是接口呢?接口描述的是可属于任何类或结构的一组相关功能,所以实现接口的类或结构必须实现接口定义中指定的接口成员。接口使用interface 关键字进行定义,可由方法、属性、事件、索引器或这四种成员类型的任意组合构成。接口的特性:1.接口类似于抽象基类,不能直接实例化接口;接口中的方法都是抽象方法,实现接口的任何非抽象类型都必须实现接口的所有成员:转载 2016-03-26 20:09:53 · 584 阅读 · 0 评论 -
简单工厂模式
设计模式(C#版)--简单工厂模式为什么要用设计模式? 1、设计模式是前人根据经验总结出来的,使用设计模式,就相当于是站在了前人的肩膀上。 2、设计模式使程序易读。熟悉设计模式的人应该能够很容易读懂运用设计模式编写的程序。 3、设计模式能使编写的程序具有良好的可扩展性,满足系统设计的开闭原则。比如策略模式,就是将不同的算法封装在子类中,在需要添加新的转载 2015-12-17 15:33:33 · 553 阅读 · 0 评论 -
c#泛型优点
泛型主要有以下几个优点:1.性能高:定义数据类型,不需要类型转换,避免拆装箱带来的性能损失;2.类型安全:定义允许使用的数据类型,在编译时检查类型错误,及早发现错误。装箱与拆箱的效率问题: ArrayList arraylist = new ArrayList(); Stopwatch watch = new Stopwatch();原创 2016-03-27 22:46:36 · 2706 阅读 · 0 评论 -
泛型委托Action与func
泛型委托Action和Fun两类特殊的委托,这两个特殊的委托是Dot FrameWrok自带的。结合lambda表达式,可以在写程序时,简洁代码和提高编码效率。(一)Action和Fun两个委托的不同点:Action只能委托必须是无返回值的方法Fun只是委托必须有返回值的方法namespace ConsoleApplication1{ public del原创 2016-05-24 20:13:56 · 1649 阅读 · 0 评论 -
c#中垃圾回收机制
析构函数执行在类的实例被销毁之前清理或释放托管资源,与c++的析构函数不同,c#的析构函数不在实例失效时立即执行。事实上我们不知道,他到底什么时候调用,而且也不能认为显示的调用析构函数。如果我们的系统需要他,则我们必须也要为系统提供,系统会在对象从托管的堆中移走之前的某点调用它。1.如果我们的代码中包含了需要及时清理的非托管资源,不要把它仅仅交给析构函数去处理,因为这样不能够即时清理它原创 2016-05-20 10:53:16 · 730 阅读 · 0 评论 -
xml文档的查询
xml是由万维网定义的一种可拓展的标记语言xml具有严格的语言规范和良好的可拓展性,允许自由定义标记以描述数据的结构xml不关心数据的显示方式,这就使得数据内容和结果与显示效果分离,不但有利于信息的搜索和数据的处理,还有利于系统的维护。早期应用程序的数据存储通常借助于自定义的文本文件或二进制文件来实现,后来借助于数据库的技术来存储数据,前者的缺点是不能在不同的应用程序之间共享数据,而原创 2016-06-25 22:38:00 · 835 阅读 · 0 评论 -
对象,集合初始化器,匿名对象
自动属性: 我们在定义一个类时,不必写字段, 例如: public string Name{get;set} 反编译会看到会自动生成一个name字段可变类型(var,dynamic) var i=10; 这里的var不是弱类型编译时系统自动推断,可以知道i 是Int32类型。dynamic 在编译阶段我们不必确定变量是什么类型,系统在运行时自动其确定类型,类似jav原创 2016-06-05 13:31:12 · 818 阅读 · 0 评论 -
Linq 基本用法
Linq查询表达式是Linq中的非常重要的一部分内容,它可以从一个或多个给定的数据源中检索数据,并指定检索结果的数据类型和表现形式下面我们看看常用的Linq查询表达式下面查询出符合条件的姓名 其中s是Students中的一个对象from s in Students where s.id<10 && s.Name.Length<10select s.Name如果查询出的内容原创 2016-06-05 17:32:06 · 5445 阅读 · 1 评论 -
C#中静态变量的初始化
类的静态字段变量初始值设定项对应于一个赋值序列,这些赋值按照它们在相关的类声明中出现的文本顺序执行。如果类中存在静态构造函数则静态字段初始值设定项的执行在该静态构造函数即将执行前发生。否则,静态字段初始值设定项在第一次使用该类的静态字段之前先被执行,但实际执行时间依赖于具体的实现。在以下示例中:using System; class Test { static vo原创 2016-06-10 12:05:15 · 1723 阅读 · 0 评论 -
.net 4.0 之后的协变与逆变
看了一篇不错的博客,是讲协变与逆变的:http://www.cnblogs.com/CLR010/p/3274310.html原创 2016-06-10 21:47:53 · 512 阅读 · 0 评论 -
c# 文件流读写信息
string msg = "dhgfjdbghafj"; byte[] myByte = System.Text.Encoding.UTF8.GetBytes(msg); //向流中写入信息 using (FileStream fsWrite = new FileStream(@"D:111.txt", FileMode.Op原创 2016-06-13 23:29:19 · 533 阅读 · 0 评论 -
const和readonly的区别
readonly修饰符用来表示只读,const用来表示不变常量。顾名思义,只读表示不能进行写操作;不变常量不能被修改。这两者到底有什么区别呢(1) readonly和const都是用来标示常量的。(2) 初始化赋值不同。const修饰的常量必须在声明的同时赋值。例如:public class Class1{ public const int MaxValue = 10原创 2016-03-26 14:05:30 · 1548 阅读 · 0 评论 -
c#泛型约束
在定义泛型类时,可以对客户端代码能够在实例化类时用于类型参数的类型种类施加限制。如果客户端代码尝试使用某个约束所不允许的类型来实例化类,则会产生编译时错误。这些限制称为约束。约束是使用 where 上下文关键字指定的。下表列出了六种类型的约束:约束说明T:struct类型参数必须是值类型。可以指定除 Nullable 以外的任何值类型。有关更多信息,请参见使用可以为 nul原创 2016-04-07 21:29:32 · 449 阅读 · 0 评论 -
索引器
索引器其实也是类的一种成员,它使得对象可以像数组一样被索引,当一个类包含数组或集合成员时,索引器将大大简化对数组或集合成员的存取操作参数的个数和类型都是任意的。用reflector反编译可以看出,索引器的内部本质上就是set_item、get_item方法。看下面的实例,先定义一个图书类 class Book { private string _title原创 2015-12-28 20:09:09 · 540 阅读 · 0 评论 -
c#访问级别约束的问题
1.方法的参数的访问修饰符必须与方法的访问修饰符兼容 class MyClass { } public class MyClass1 { //方法的参数的访问修饰符必须与方法的访问修饰符兼容。 public void M1(MyClass mc) { Console.WriteL原创 2015-12-28 22:07:18 · 397 阅读 · 0 评论 -
静态类
我们为什么要使用静态类,以及静态类的作用 在静态类中只能有静态成员,不能有实例成员 静态类不能创建对象,不能new对象。 什么时候用静态类: 1>在整个应用程序中要共享某些数据的时候可以使用静态类。 2>静态类不能创建对象,使用的时候直接通过类名来操作成员,(使用方便),所以说对于那些类中包含有大量的方法,并且类不需要创建对象的时候,可以使用静态类原创 2015-12-28 22:40:27 · 455 阅读 · 0 评论 -
try后的finally {}里的代码会不会被执行,什么时候被执行?
先看下面一段代码 static void Main(string[] args) { Console.WriteLine(GetIt()); Console.ReadKey(); } static int GetIt() { int i = 8原创 2015-12-29 10:53:07 · 2644 阅读 · 0 评论 -
c#中字符串的内存分配,与驻留池
刚开始学习C#的时候,就听说CLR对于String类有一种特别的内存管理机制:有时候,明明声明了两个String类的对象,但是他们偏偏却指向同一个实例。如下:String s1 = "Hello";String s2 = "Hello"; //s2和s1的实际值都是“Hello”bool same = (object) s1 == (object转载 2015-12-30 12:49:31 · 498 阅读 · 0 评论 -
装箱与拆箱
总结来说:装箱就是将值类型转化成引用类型,拆箱就是就是将引用类型转化成值类型装箱: int n = 10; string s = n.ToString();//这个不是装箱。string与int是完全不同的两种类型,没有父子类关系,所以不可能发生装箱和拆箱,原创 2015-12-31 13:12:10 · 458 阅读 · 0 评论 -
单例模式
C#设计模式学习笔记-单例模式 最近在学设计模式,学到创建型模式的时候,碰到单例模式(或叫单件模式),现在整理一下笔记。 在《Design Patterns:Elements of Resuable Object-Oriented Software》中的定义是:Ensure a class only has one instance,and provide a global poi转载 2015-12-17 14:47:08 · 399 阅读 · 0 评论 -
c#解析XML
之前在项目中处理的都是一些小数据量的XML文件,都是直接用.Net Framework中System.XML命名空间下的基本的XmlDocument、XmlElement、XmlNode等基本类,读取了节点之后,获取属性及其内部文本内容,但是这种方法在处理小文本量XML数据时,尚可使用,一旦处理较大数据量的XML数据,就显得那么笨拙,效率也低下。用XPath语言可以方便高效的筛选、获取我们想要原创 2016-01-03 22:26:32 · 514 阅读 · 0 评论 -
c#解析Json数据
JSON(全称为JavaScript Object Notation) 是一种轻量级的数据交换格式。它是基于JavaScript语法标准的一个子集。 JSON采用完全独立于语言的文本格式,可以很容易在各种网络、平台和程序之间传输。JSON的语法很简单,易于人阅读和编写,同时也易于机器解析和生成。JSON与XML的比较◆可读性 JSON和XML的可读性相比较而言,由于XML提供辅助的标转载 2016-01-03 22:46:45 · 484 阅读 · 0 评论 -
拓展方法
所谓的拓展方法,就是在原有的类型上面添加一个方法,就像在原有的类中添加的一样,只是现在重新定义一个静态类来进行添加现在有个数学类,里面有个加法 public class Math { public int Add(int a, int b) { return a + b; } }我们现在想要在原创 2015-12-27 16:25:08 · 442 阅读 · 0 评论 -
反射是什么,以及作用
一.能做什么?反射(Reflection)是.NET中的重要机制,通过放射,可以在运行时获 得.NET中每一个类型(包括类、结构、委托、接口和枚举等)的成员,包括方法、属性、事件,以及构造函数等。还可以获得每个成员的名称、限定符和参数 等。有了反射,即可对每一个类型了如指掌。如果获得了构造函数的信息,即可直接创建对象,即使这个对象的类型在编译时还不知道。反射是一种机制,通过这种机制我们可以转载 2016-03-20 22:29:19 · 4098 阅读 · 0 评论 -
委托与事件
从使用层面上了解委托和事件的区别从本篇文章中,我们将从代码层面知道委托和事件的差异和用处,并且我们不会用猫和老鼠之类奇怪的比喻来混淆大家。首先,我们知道委托和事件都可以用来调用跟自己方法签名一样的方法。容易混淆大家的地方大多在于这两者之间的区别。从我们使用委托delegate和事件event上的主要有两大区别(如表1所示)。转载 2016-03-21 22:42:20 · 588 阅读 · 0 评论 -
Ilist 与list的区别
首先IList 泛型接口是 ICollection 泛型接口的子代,并且是所有泛型列表的基接口。 它仅仅是所有泛型类型的接口,并没有太多方法可以方便实用,如果仅仅是作为集合数据的承载体,确实,IList可以胜任。 不过,更多的时候,我们要对集合数据进行处理,从中筛选数据或者排序。这个时候IList就爱莫能助了。 1、当你只想使用接口的方法时,ILis<>这种方式比较好.他不获取实转载 2016-01-11 11:13:30 · 1343 阅读 · 0 评论