您的位置:首页 > 编程语言 > C#

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

2016-08-21 21:02 459 查看
一、泛型集合:

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的例子。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: