关键词搜索

源码搜索 ×
×

12.15C#

发布2023-02-22浏览357次

详情内容

(知识点复习,补漏) 

try-catch语法 

  1. try
  2. {
  3. int temp = myArr[4];
  4. }
  5. catch(IndexOutOfRangeException e)//捕捉的异常类型(可以有多个catch)
  6. {
  7. //出现这个异常的时候,怎么处理
  8. Console.WriteLine("出现了数组下标越界的异常");
  9. }
  10. finally
  11. {
  12. Console.WriteLine("不管是否出现异常,都会执行");
  13. }

检测用户的输入是否合法

  1. while (true)//死循环,靠底下break
  2. {
  3. try
  4. {
  5. n1 = Convert.ToInt32(Console.ReadLine());
  6. n2 = Convert.ToInt32(Console.ReadLine());
  7. //因为try里代码出错就会跳到catch里,所以上面无异常就会执行break
  8. break;//跳出循环,只要输入不合法就一直循环
  9. }
  10. catch (FormatException e)
  11. {
  12. Console.WriteLine("你输入的数据,不符合规则,请重新输入");
  13. }
  14. }
  15. 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#基础编程课程) 

  1. public Boss(int attack,int hp,int speed)//这是一个子类的构造函数
  2. {
  3. this.attack = attack;//子类里的attack
  4. //this.hp = hp;
  5. //this.speed = speed;
  6. base.hp = hp;//子类里有与父类重名的hp,这里base访问的是父类里的hp
  7. base.speed = speed;
  8. }

不过也没必要这么搞,重写方法有,变量名何必重复?

(真是学无止境啊) 

相关技术文章

点击QQ咨询
开通会员
返回顶部
×
微信扫码支付
微信扫码支付
确定支付下载
请使用微信描二维码支付
×

提示信息

×

选择支付方式

  • 微信支付
  • 支付宝付款
确定支付下载