(知识点复习,补漏)
try-catch语法
try
{
int temp = myArr[4];
}
catch(IndexOutOfRangeException e)//捕捉的异常类型(可以有多个catch)
{
//出现这个异常的时候,怎么处理
Console.WriteLine("出现了数组下标越界的异常");
}
finally
{
Console.WriteLine("不管是否出现异常,都会执行");
}
检测用户的输入是否合法
while (true)//死循环,靠底下break
{
try
{
n1 = Convert.ToInt32(Console.ReadLine());
n2 = Convert.ToInt32(Console.ReadLine());
//因为try里代码出错就会跳到catch里,所以上面无异常就会执行break
break;//跳出循环,只要输入不合法就一直循环
}
catch (FormatException e)
{
Console.WriteLine("你输入的数据,不符合规则,请重新输入");
}
}
Console.WriteLine(n1 + n2);
光声明是不够的,只有实例化后这个对象才真正存在
Customer c2;//声明对象
c2 = new Customer();//实例化一个对象
Customer c1 = null ;
这样给一个null也不行,还是相当于光声明未赋值
public int Age { get;private set; }
//可以添加访问修饰符,单独控制只读只写
//自动属性,自动创建private int age;成员
匿名类型
var age2 = 45;//根据赋值确定类型
age2 = 90;
//age2 = "";(赋值之后类型就确定了)
⾯向对象-继承 继承是什么?
在上⼀节课中学习了如何定义类,⽤类当做模板来声明我们的数据。 很多类中有相似的数据,⽐如在⼀个游戏中,有Boss类,⼩怪类Enemy,这些类他们有 很多相同的属性,也有不同的,这个时候我们可以使⽤继承来让这两个类继承⾃同⼀个 类。
继承的类型
实现继承: 表⽰⼀个类型派⽣于⼀个基类型,它拥有该基类型的所有成员字段和函数。 在实现继 承中,派⽣类型采⽤基类型的每个函数的实现代码,除⾮在派⽣类型的定义中指定重写 某个函数的实现代码。 在需要给现有的类型添加功能,或许多相关的类型共享⼀组重 要的公共功能时,这种类型的继承⾮常有⽤。
接⼝继承: 表⽰⼀个类型只继承了函数的签名,没有继承任何实现代码。 在需要指定该类型具有 某些可⽤的特性时,最好使⽤这种类型的继承。
多重继承
⼀些语⾔(C++)⽀持所谓的 “多重继承”,即⼀个类派⽣⾃多个类。 使⽤多重继承的优点是 有争议的:⼀⽅⾯,毫⽆疑问,可 以使⽤多重继承编写⾮常复杂、 但很紧凑的代码,。另⼀⽅ ⾯,使⽤多重实现继承的代码常常很难理解和调试。 如前所述,简化健壮代码的编写⼯作是 开发 C#的重要设计 ⽬标。 因此,C#不⽀持多重实现继承。 ⽽ C#允许类型派⽣⾃多个接 Unity 1143 C#编程-第⼆季-⾯向对象 16 ⼝— — 多重接⼝继承。 这说明,C#类可以派⽣⾃另⼀个类和任意多个接⼝。更准确地说, System.Object 是⼀个公共的基类,所 以每个 C#(除了Object类之外)都有⼀个基类,还可以 有任意多个基接 ⼝。
this和base关键字
this(base)作⽤:
1、IDE给提⽰
2、区分局部变量和字段 Unity 1143 C#编程-第⼆季-⾯向对象 17 this可以访问当前类中定义的字段,属性和⽅法,有没有this都可以访问,有this可以让IDEVS编译器给出提⽰,另外当⽅法的参数跟字段重名的时候,使⽤this可以表明访问的是类 中的字段,base可以调⽤⽗类中的公有⽅法和字段,有没有base都可以访问,但是加上 base.IED⼯具会给出提⽰,把所有可以调⽤的字段和⽅法罗列出来⽅便选择
(部分内容来自siki学院C#基础编程课程)
public Boss(int attack,int hp,int speed)//这是一个子类的构造函数
{
this.attack = attack;//子类里的attack
//this.hp = hp;
//this.speed = speed;
base.hp = hp;//子类里有与父类重名的hp,这里base访问的是父类里的hp
base.speed = speed;
}
不过也没必要这么搞,重写方法有,变量名何必重复?
(真是学无止境啊)