随笔分类 - C#
摘要:C#的多态性:我的理解是:同一个操作,作用于不同的对象时,会有不同的结果,即同一个方法根据需要,作用于不同的对象时,会有不同的实现。C#的多态包括:接口多态,继承多态。其中继承多态又包括通过虚拟方法实现的多态和通过抽象方法实现的多态性例如:基类动物都有吃的方法,但是不同的动物吃的东西就会不一样,例如狼吃肉,羊吃草,这样“吃”的这个方法就要在派生类里面重新实现以下,运行时,通过指向基类的指针,来调用实现派生类中的方法。接下来举例实现多态性。1. 接口多态性把动物“吃”的方法放到一个接口(IAnimal)里,然后让具体的动物类(Wolf/Sheep)继承这个接口,并根据自己的需要实现这个接口。代码
阅读全文
摘要:继承反应了类和类之间的关系。 世界上很多事物都是有共性的,共性的那一部分我们就抽象为基类,用于派生其它类,这样提高了代码的复用性,使得代码的结构清晰易读,而且易于代码的扩展和维护。 C#的继承只能继承自一个基类,这一点不同于C++的继承。 C#的继承具有传递性,即B继承自A,C继承自B,则C具有A的所有特性。 C#的继承隐式为public的。 假如不在派生类构造器中显示调用一个基类构造器,编译器会自动插入对基类的默认构造器的一个调用,然后才会执行派生类构造器中的代码,如果基类没有默认的构造器,会造成编译错误。 举例:动物的共性:有嘴巴,有眼睛,有鼻子,可以移动,能够吃东西 所...
阅读全文
摘要:1.委托delegate委托delegate也是一种类型,在任何可以声明类的地方都可以声明委托,它将方法当做另一个方法的参数进行传递,这样就可以传递不同的方法,完成不同的功能,使程序具有很好的可扩展性。举例:假设这里有一台电脑,有人会用它写程序,有人会用它打游戏,有人会用它看电影,有人会用它边听音乐边玩游戏,有人会用它边听音乐边看文档,边上QQ。这台电脑可以抽象成一个类Computer,里面有个方法DoWork,所有的人都要通过这个方法来做自己的事情。不用委托的时候我们可以实现一些固定的东西,不够灵活:例如:class Program { static void Main(str...
阅读全文
摘要:Timer组件是基于服务器的计时器,通过设置时间间隔Interval,周期性的触发Elapsed事件。用法如下: class Program { static System.Timers.Timer Timer1 = new System.Timers.Timer(); static void Main() { Timer1.Interval = 1000; Timer1.Elapsed += new ElapsedEventHandler(PeriodicTaskHandler); ...
阅读全文
摘要:线程:线程是进程的独立执行单元,每一个进程都有一个主线程,除了主线程可以包含其他的线程。多线程的意义:多线程有助于改善程序的总体响应性,提高CPU的效率。 多线程的应用程序域是相当不稳定的,因为多个线程在同一时间内都能运行共享的功能模块。为了保护应用程序的资源不被破坏,为多线程程序提供了三种加锁的机制,分别是:Monitor类、Lock关键字和Mutex类。 1. lock lock实现的功能是:使后进入的线程不会中断当前的线程,而是等待当前线程结束后再继续执行。 应用:private Object thisLock=new object(); lock(thisLock){ //锁定的代码块
阅读全文
摘要:光一个文件操作就有如此多的类和函数,真是让人抓耳挠腮,请看http://msdn.microsoft.com/zh-cn/library/29kt2zfk(v=VS.80).aspx
阅读全文
摘要:C#数据类型分为两大类:值类型和引用类型1.值类型值类型包括: 1.1 简单类型 1.2 结构类型 1.3 枚举类型2.引用类型 引用类型包括:2.1类2.2 委托2.3 数组2.4接口
阅读全文
摘要:对象复制根据如何复制对象成员分为浅度复制和深度复制。1.浅度复制:对于引用类型,新对象的引用成员和复制对象的引用成员指向同一个对象。对于值类型会复制其本身。2.深度复制:将引用成员指向的对象进行复制,即:创建新的引用成员指向的对象,然后复制对象包含的数据。
阅读全文
摘要:1. is 是验证操作对象是不是自己希望的 运算公式:对象 is 类型 返回true:对象是指定类型返回false:对象不是指定类型2. as 是将对象转换成指定类型运算公式:对象 as 类型 转换成功:对象的类型就是指定的类型 转换失败:返回null注意:The"is" and"as" operator must be used with a reference type or nullable type (example:'int' is a non-nullable value type)
阅读全文
摘要:1. 获取绝对文件路径System.IO.Path.GetFullPath(string path)string fileName = "myfile.ext";string path1 = @"mydir";string path2 = @"\mydir";string fullPath;fullPath = Path.GetFullPath(path1);fullPath = Path.GetFullPath(fileName);fullPath = Path.GetFullPath(path2);2. 获取文件名字(得到指定路径
阅读全文
摘要:C#——方法实现总结本文分两部分来写,第一部分:C#方法实现的理解与问题,第二部分:C#中方法实现的种类。第一部分:C#方法实现的理解与问题理解:1. 使用virtual和override关键字,在基类和派生类中用同样的方法签名实现不同的方法2. 使用interface接口,在不同的类中,用相同的方法签名实现不同的方法3. 用委托delegate,把不同类中的方法集合在一起,然后一起调用,完成某种综合的功能4. 使用事件,完成跟委托一样的功能以上四条全都说明了面向对象的多态性。问题:怎么样区分委托和事件?我把它们给混淆了,分不清楚。第二部分:C#中方法的实现分为以下几种:1.最基本的方法声明r
阅读全文
摘要:哈哈,最近刚刚开始学习C#,感觉挺好。 下面一段代码是用C#实现的,主要完成对字符串的加密和解密操作。 //源代码//对一段字符串实现加密解密操作using System;using System.Collections.Generic;using System.Linq;using System.Text;namespace study_test4{ class Program { static void Main(string[] args) { string s; //定义存储输入字符串变量 int L; //定义存储字符串长度的变量 /*对输入的字符串完成加密*/ Console.Wr
阅读全文