我的c#日常学习
目录
1.委托
委托就是一个方法的类型
关键字:delegate
//实例化一个委托对象 需要用一个方法来实例化
//这个方法的返回值类型和参数列表需要保持一致
2.反射
通过类名 成员的名字来进行对象的实例化,操作类成员。
Class type {
Fieldlnfo,//字段
Methodinfo,//方法
Constructor,//构造 方法
}
object abc = Activator.CreateInstance(t1, BindingFlags.NonPublic| BindingFlags.Instance, null, new object[] {1,2.2,"hello" },null );
//BindingFlags 是要访问的方法或字段的权限描述 ,必须要同时具备两个描述
// 1,要有要访问的成员访问权限描述 静态的话 static 非静态 instance
3.异常处理
异常处理:如果一个异常产生,但没有被处理,这个异常会导致程序崩溃
异常:程序在运行的过程中出现的种种不正常现象
try {//可能会出现异常的代码
}
Catch{//这里会捕获try中可能出现的异常
}
Finally{//无论程序有没有异常,finally中的代码始终会执行
}
在c#中所有的异常都是exception的子类。
-
一个try可以匹配多个catch来捕获多种异常
-
如果有多个catch
2.1.如果多个catch捕获的异常没有继承关系,顺序无所谓
2.2.如果多个catch捕获异常彼此间之间有继承关系,那么必须吧父类异常放在最后面
Exception是所有异常的父类
自定义异常:继承自exception类,写一个自己的类即可
Class ScoreException:Exception{}
Console.ForegroundColor = ConsoleColor.Red;
class ScoreExpection : Exception
{
//如果希望自定义的异常有描述信息只需要一个有参构造
public ScoreExpection(string massage) : base(massage) { }
}
class person {
public static void ScoreExpection()//设计一个异常 {
ScoreExpection expection = new ScoreExpection("这是我设计的异常");
throw expection; //抛出一个异常
}
}
class Program {
static void Main(string[] args) {
try {
person.ScoreExpection();
}
catch (ScoreExpection exception){
Console.ForegroundColor = ConsoleColor.Red;
Console.WriteLine(exception);
Console.ReadKey();
}
}
}
}
4.隐藏
Class animal{
Public void show(){
Console.writeline(“这是 ”);
}
}
Class cat:animal{
Public new void show(){//将从父类中继承的方法隐藏
Console.writeline(“这是 cat”);
}
}
Public static void main(string []args){
Cat a =new cat();
c.show();//调用的是子类中的方法
animal b = new cat();// 调用的是从父类中继承的show方法
}