C#基础进阶一 复习

一、综合练习题1:

磁盘上有不同的文件,比如*.txt、.avi、xls文件,要求编写一个控制台程序,用户输入文件全名后,将文件后缀传递到一个方法中,该方法根据后缀返回对应的文件对象。

分析:此练习题用到了类的多态,可以复习抽象类、简单工厂、进程等

1、复习1: 用进程打开指定的文件

//使用进程打开指定的文件
            ProcessStartInfo psi = new ProcessStartInfo(@"C:\Users\tufeiax\Desktop\042.jpg");
            Process p = new Process();
            p.StartInfo = psi;
            p.Start();

2、复习2:抽象类---抽象类一般是想实现多态,但又不确定基类的方法的时候。

语法:基类:abstract class;  基类的抽象方法:abstract+返回值类型,不能有方法体,并且子类必须重写此方法

3、复习3:简单工厂:简单工厂是最普通的C#设计模式,具体实现是,写一个有父类返回值的方法,返回值父类内的对象依据传入参数来决定。最后通过主函数中调用此方法

得到一个父类对象,调用此对象的抽象方法,从而实现多态

 二、虚方法需要注意的地方:

1、父类中如果有方法需要让子类重写,则可以将该方法标记为虚方法,访问修饰符后加上virtual;

2、虚方法在父类中必须有实现,哪怕是空实现,两个大括号必须有;

3、虚方法在子类中可以重写(override),也可以不重写

 

三、抽象类需要注意的地方:

1、访问修饰符后需加上abstract标记;

2、抽象方法不能有任何实现;

3、抽象成员必须包含在抽象类中;

4、子类必须重写(override)该方法;

5、抽象类不能实例化,抽象类的作用就是为了让子类继承

6、抽象类中可以包括抽象成员,也可以包括具体代码的成员;

7、抽象方法不可以是静态的,不能被static修饰。

 

四、接口

1、接口只能包含方法(属性、事件、索引器其实都是方法)

2、接口中的成员不能有任何实现;

3、接口不能实例化;

4、接口中的成员不能有任何访问修饰符(默认为public)

5、接口的子类必须实现接口中的所有成员;

6、子类实现接口成员时,不需要任何关键字,直接实现即可;

7、接口存在的意义就是为了多态。

 

五、字符串复习

学习.net就是学习无数个类库怎么用

1、复习string类:字符串操作类,可以看成是可读字符数组,string类的特性是不可变,如果想要改变字符串中的某个字符,需要转成字符数组修改,然后转回string类

比如,string s=“abc”; s=“efg”,s被重新赋值时会重新再堆中开辟一段新空间,原先的abc依然存在,程序结束时,gc自动将其清除

属性:

.Length  获得字符串的个数

string.IsNullOrEmpty   静态方法   判断是否为null或者空字符,返回值是bool类型

.ToCharArray()将字符串类型转成字符数组,返回值是char[]

.ToLower()    转小写,返回一个新的string

.ToUpper()  转大写,返回一个新的string

.Equals(str,StringSplitOption...)  与str比较是否相同,返回bool类型,第二个参数为忽略大小写比较

str.Equals(str2, StringComparison.OrdinalIgnoreCase);

.Contains(char/string) 是否包含字符或字符串,返回bool类型

.IndexOf(char/string,index)   返回第一次出现参数的字符或字符串的索引位置,第二个参数是重载,代表从哪个位置开始查找

.LastIndexOf(char/string,index)  返回最后一个出现字符或字符串的索引位置
.SubString(index,n)   截取字符串,从index位置截取到最后,或者截取n位,返回一个新字符串

..Split(char[]/string[],x)  分割字符串,将字符串内含有char[]或string[]的元素删除,分割成一个字符串数组,返回

str.Split(new char[] { ' ', '-' }, StringSplitOptions.RemoveEmptyEntries);

string.Join(char/string,string[])   静态方法   将参数1插入参数2的元素当中,并连接起来返回一个新的字符串

.Replace(oldchar/oldstring,newchar/newstring)    将字符串中的参数1替换为参数2,并返回一个新的字符串

 

2、复习StringBuilder类  :高效字符串操作类

高效的原因是:操作字符串时,拼接字符串不需要重新开辟空间,所以当字符大量被重新赋值时,最好使用StringBuild类操作

它只是字符串拼接的工具,不能使用,拼接完成之后要将其转换成string

创建方法:StringBuilder sb=new StringBuilder()

属性:

sb.Append(string)  追加字符串

sb.ToString()  转成字符串

sb.Insert(index,x)    在sb的索引位置插入x,x可以是很多类型,不过插入之前都会被转成字符串

sb.Replace(oldchar/oldstring,newchar/newstring)   将字符串中的第一个参数替换成第二个参数

案例:使用StringBuilder拼接HTML的table表格

 

六、集合复习

ArrayList  :集合

Hashtable  :键值对

以上两个一般不用了,用以下连个代替。因为上面两个赋值和取值过程中会发生大量的装箱和拆箱(值类型---引用对象类型)

List<T>  : 泛型集合

Dictionary<TKey,TValue>  : 泛型键值对

1、泛型集合

集合初始化:

List<int> list = new List<int>() { 1, 2, 3, 4, 5, 6, 7, 8, 9 };

或者

List<int> list = new List<int>();
            list.AddRange(new int[] { 1, 2, 3, 4, 5, 6, 7, 8, 9 });

属性:

list.Add()  给集合添加单个元素

list.AddRange() 给集合添加多个元素

list.ToArray()  将集合转成数组,返回固定数据类型的数组

 

2、泛型键值对

声明方法,例:

Dictionary<char, int> dic = new Dictionary<char, int>();

 

七、静态和非静态  static

特点:静态类中只能有静态成员,非静态类中的静态函数只能访问静态成员静态类不能初始化对象(因为静态类不能有构造函数,不能出现访问修饰符)

八、结构与类

***

 

 

 

 

 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值