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

一、泛型集合:

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);//读取所有文本返回string
File.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();//返回只读的FileStream
FileStream fs=File.OpenWrite();//返回只写的FileStream
FileStream 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的例子。

评论 31
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值