.Net面试简答题——每日掌握(十)

一、以下两种异常处理方式有什么区别?try{}catch(){throw;}try{}catch(Exceptionex){Throwex;}

  • 前者catch无参数,可以捕获所有异常,只有throw关键字,表示抛出当前catch语句捕获的异常。
  • 后者catch有参数,可以捕获所有以Exception类派生的异常,throw变量名;抛出的是Exception异常或Exception派生的类型

二、用接口或父类作为输入的参数有什么好处?返回值如果是接口是为了什么?

  • 接口或父类作为参数,所有继承了此接口或父类的类都可以使用,即你给此方法传参数的时候,可以
  • 把继承了这个接口或父类的类的实例传给这个方法。可以一次性传入多种字段、方法等而不用定义多个形参。
  • 接口作为返回值,返回的是实现接口的对象。

三、C#和JS的闭包?

  • 闭包的概念是内层的函数可以引用包含在它外层的函数的变量,即使外层函数的执行已经终止。但该变量提供的值并非变量创建时的值,而是在父函数范围内的最终值。
  • C#闭包可理解为跨作用域访问函数内变量,那么如何避免闭包陷阱呢?C#中普遍的做法是,将匿名函数引用的变量用一个临时变量保存下来,然后在匿名函数中使用临时变量。JS闭包,在js中的我的理解就是函数嵌套函数,当内部函数在定义它的作用域的外部被引用时,就创建了该内部函数的闭包,如果内部函数引用了位于外部函数的变量,当外部函数调用完毕后,这些变量在内存不会被释放,因为闭包需要它们。
©️2020 CSDN 皮肤主题: 书香水墨 设计师:CSDN官方博客 返回首页