C# 6.0本质论(方法与参数)

四、方法与参数

4.1 方法的调用

  • 完全限定的方法名称包括命名空间、类型名称和方法名称
  • 在同一个命名空间下的同一个类中的方法,可以不使用完全限定的方法名称

4.2 命名空间

  • 命名空间是一种分类机制,用于组合功能相关的所有类型
  • 命名空间层级一般从公司名开始,然后是产品名,最后是功能领域

4.3 表达式主体方法

  • 为了支持不带方法主体的最简单的方法声明
  • 如果方法体中只有一条表达式,且表达式的返回类型和方法的返回类型匹配,则可简写为public int count() => count+=20;

4.4 using指令

4.4.1 using

  • 省略任意命名空间的引用,不需要使用完全限定名
  • using指令不会导入任何嵌套命名空间中的类型,例如System 和 System.Text的关系
  • 嵌套命名空间必须显式导入

4.4.2 using static

  • 为静态方法或静态成员变量省略命名空间及类的引用
  • using static System.Console;

4.4.3 使用别名

  • using alias = System.Console;

4.5 参数

4.5.1 ref 引用参数

  • 相当于给变量取别名,并未重新开辟一段内存并复制值或地址。
  • 指向实参的同一个地址,而不是复制实参地址对应的内存中存储的值。
  • 需要在传参前初始化

4.5.2 out 输出参数

  • 引用传递,传参后必须对其赋值;

4.5.3 参数数组

  • params string[ ]
    • 可变参数
    • 3必须是最后一个参数,最多只有一个这样的参数数组

4.6 递归

  • 问题已分解至最小,不可再分,返回计算结果,不再调用自身即停止递归;
  • 采取措施将大问题分解成下一级小问题,递归调用自身进行问题分解
  • 每次返回一个需要下一级数据支撑的结果,直到自身就能提供结果为止。

4.7 方法重载

  • 方法重载
    • 方法名相同,但方法签名不同;方法签名由方法名、参数数量、参数类型决定。
  • 常见的重载形式
    • 在一个方法中实现核心逻辑,考虑参数的所有情况
    • 在其他方法中调用这个方法,只改变输入参数
      • 例如,核心逻辑考虑两个参数的情况,需要输入路径和拓展名
      • 一个参数的方法重载的实现是通过调用核心方法,并在调用时给拓展名设置为".cs"
      • 无参方法重载的实现是通过调用一个参数的方法,在调用时将路径设为当前路径。

4.8 可选参数

  • 在形参声明时,给形参设默认值
  • 解决重载需要单独重新定义方法的问题。
    • 比如,核心方法需要两个参数,则给路径设为默认值".cs",当输入一个参数时,则路径默认设为".cs"
    • 默认值必须是可以确定的值,如常量。

4.9 命名参数

  • 可在调用方法时显式指出输入的形参名
    • 针对可选参数需要按顺序判断参数赋值问题
  • 形参不能修改
    • 否则需要在所有方法调用位置同步修改。
  • 当方法重载和可选参数一起使用时,若对调用的方法会发生歧义,默认调用没有可选参数的方法
    • 比如针对同一个方法名,既用方法重载接收一个参数
    • 又用可选参数在接收一个参数的情况下还可接收两个可选参数
    • 当调用方法输入一个参数时,则调用的是没有可选参数的方法。

4.10 方法解析

  • 当存在多个方法重载,且输入参数都需要隐式转型时,则会调用形参类型更接近的方法
  • 最好在调用时显式转型

4.11 异常

4.11.1 try/finally

  • 如果没有catch或者没catch到,则会在栈中寻找能catch的地方
  • 如果还是没有找到,则finally是否执行取决于计算机的具体实现,即操作系统的不同。

4.11.2 常规catch块

  • catch中没有参数
    • 默认获取object类型
    • 避免使用
      • C#2.0及以后,所有异常都派生于System.Exception
      • 即使是其他语言引发的不是从Exception派生的异常,也会封装在System.Runtime.CompilerServices.RuntimeWrapperedException
        • 该类派生自Exception

4.11.3 throw

  • 主动抛出异常
    • 该异常可以是通过new创建的,也可以是空异常 throw;
      • new创建
        • 会替换为当前调用栈信息
      • 空异常
        • 用于在接收异常后无法处理需要重新抛出原始异常
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值