C#基础知识(十一)——泛型集合、文件管理、多态、接口

来源:互联网 发布:淘宝白色连衣裙 编辑:程序博客网 时间:2024/05/22 04:33

一、泛型集合:

List<T>是泛型集合,就是为了专门处理某种类型。ArrayList对应的是List<类型>。在尖括号中写什么类型,这个集合就变成了什么类型的集合。

例子:

//随机往这个List集合中 添加十个数字,不能重复,求和,求最大值,求最小值,求平均值List<int> list = new List<int>();Random r = new Random();int num = 0;while (list.Count != 10){    num = r.Next(1, 100);    if (!list.Contains(num))    {        list.Add(num);    }}Console.WriteLine("最大值:{0}", list.Max());Console.WriteLine("最小值:{0}", list.Min());Console.WriteLine("和为{0}", list.Sum());Console.WriteLine("平均值{0}", list.Average());Console.ReadKey();List<string> listStr = new List<string>();listStr.Add("哈哈,小杨又帅了");
二、Dictionary

Dictionary<TKey,TValue>,默认提供命名空间。Hashtable对应的是Dictionary<键的类型,值的类型>。在尖括号中填入键的类型与值的类型,那么这个集合就变成了一个指定的键值对模型。其使用方式与Hashtable一样。

例子:

Dictionary<string, string> dic = new Dictionary<string, string>();//和哈希表很像,也是无序的dic.Add("老苏", "凤姐");dic.Add("老牛", "芙蓉");dic.Add("老马", "春哥");dic.Add("老虎", "曾哥");dic.Add("老蒋", "小月月");foreach (string item in dic.Keys){    Console.WriteLine("key---:{0},value---:{1}",item,dic[item]);}Console.ReadKey();

三、目录管理(Directory类):

基本操作:创建、移动和删除的功能。

命名空间System.IO

常用方法:

CreateDirectory()-Move()-Delete()-Exist()
比较ArrayList,Hashtable,List,Dictionary的异同:


四、文件管理

文件管理:File类

基本操作:判存,复制,移动,删除

命名空间System.IO

基本方法:

File.Exist();//判断文件是否存在File.Copy(“source”,“targetFileName”,true);//文件拷贝,true表示当文件存在时“覆盖”,如果不加true,则文件存在报异常。File.Move(“source”,“target”);//移动(剪切)File.Delete(“path”);//删除File.Creat(‘“path”)//创建文件File.ReadAllLines(“path”, Encoding.Default);//读取所有行,返回string[]File.ReadAllText(“path”, Encoding.Default);//读取所有文本返回stringFile.ReadAllBytes(“path”);//读取文件,返回byte[],把文件作为二进制来处理。File.WriteAllLines(“path”, new string[4] ,Encoding.Default);//将string数组按行写入文件。File.WriteAllText(“path”, “string”);//将字符串全部写入文件File.WriteAllBytes(“path”,new byte[5]);//将byte[]全部写入到文件File.AppendAllText()//将string追加到文件

文件流:FileStream类

命名空间System.IO

基本方法:

FileStream fs=File.Open(); //返回FileStream FileStream fs=File.OpenRead();//返回只读的FileStreamFileStream fs=File.OpenWrite();//返回只写的FileStreamFileStream fs=new FileStream(参数);
五、多态

多态就是对象可以表现多个类型的能力。

子类可以有与父类方法名相同的方法:
----签名不同(重载)
----签名相同(隐藏基类方法)
子类可以重写父类方法:
--
虚方法

--重写方法
--重写基类方法一样可以调用基类方法

抽象方法与抽象类:

抽象类与抽象方法由abstract修饰,abstract的使用注意:
抽象方法没有方法体;抽象成员只能存在于抽象类中;抽象类可以有非抽象成员;抽象类的派生类必须实现抽象方法体;抽象类只能用作基类,无法实例化。

虚方法:

用virtual修饰的方法叫做虚方法。虚方法可以在子类中通过override关键字来重写
常见的虚方法:ToString() Equals


六、接口:

1、定义:interface关键字,接口只有方法、属性、索引和事件的声明。

接口的名称通常以“I”开头,如IList。接口是用来实现的,所有成员默认为public。
如果一个类即继承了类又实现了接口,那么类必须写在前面。一个类只能继承一个父类,但可以实现多个接口。
C#中的常用接口:IList,IComparable,IComparer, IEnumerable,IEnumerator,ICollection,IDictionary等等。

2、语法:

[访问修饰符] interface 接口名{    // 接口成员定义}Interface IfFly{void IFly();}
3、比较C#中的接口和类的异同:

不同点:
不能直接实例化接口。
接口不包含方法的实现。
接口可以多继承,类只能单继承。
类定义可在不同的源文件之间进行拆分。
相同点:
接口、类和结构都可以从多个接口继承。
接口类似于抽象基类:继承接口的任何非抽象类型都必须实现接口的所有成员。
接口和类都可以包含事件、索引器、方法和属性。

4、比较abstract class和interface有什么区别? 
相同点: 
都不能被直接实例化,都可以通过继承实现其抽象方法。 
不同点: 
接口支持多继承;抽象类不能实现多继承。 
接口只能定义行为;抽象类既可以定义行为,还可能提供实现。 
接口可以用于支持回调(CallBack);抽象类不能实现回调,因为继承不支持。 
接口只包含方法(Method)、属性(Property)、索引器(Index)、事件(Event)的签名,但不能定义字段和包含实现的方法;
抽象类可以定义字段、属性、包含有实现的方法。  
接口可以作用于值类型(Struct)和引用类型(Class);抽象类只能作用于引用类型。例如,Struct就可以继承接口,而不能继承类。
加分的补充回答:讲设计模式的时候SettingsProvider的例子。

0 0
原创粉丝点击