type
status
date
slug
summary
tags
category
icon
password
Property
Aug 14, 2023 11:59 AM

本节内容

传值参数
输出参数
引用参数
数组参数
具名参数
可选参数
扩展方法(this参数)
传值参数
notion image
传值参数→值类型
notion image
注意
  • 值参数创建变量的副本
  • 对值参数的操作永远不影响变量的值
传值参数→引用类型,并且创建新对象
notion image
注意
  • 值参数创建变量的副本
  • 对值参数的操作永远不影响变量的值

传值参数→引用类型,只操作对象,不创建新对象

notion image
注意
  • 对象还是那个对象,但对象里的值(字段/属性)已经改变

引用参数

notion image
引用类型→值类型
notion image
注意
  • 引用参数并不创建变量的副本
  • 使用ref修饰符显示指出–此方法的副作用是改变实际参数的值
引用参数->引用类型,创建新对象
notion image
注意
  • 引用参数并不创建变量的副本
  • 使用ref修饰符显示指出–此方法的副作用是改变实际参数的值
引用参数→引用类型,不创建新对象只改变对象的值
notion image
注意
  • 此时与传值参数在效果上并无不同,但机理不一样,有些面试题会考到
传值会创建副本,是两个不同的变量,但是指向的堆内存地址是一样的。
引用传值不会创建副本,是同一个变量,内存地址一样的,指向的堆内存地址是一样的

输出参数

带有输出参数的方法,一定具有副作用,获得除返回值之外的额外输出
notion image
输出参数→值类型
notion image
注意
  • 输出参数并不创建变量的副本
  • 方法体内必须要有堆输出变量赋值的操作
  • 使用out修饰符显式指出–此方法的副作用是通过参数向外输出值
  • 从语义上来讲–ref是为了“改变”,out是为了“输出”
使用输出参数的实例

输出参数→引用类型

notion image
注意
  • 输出参数并不创建变量的副本
  • 方法体内必须要有堆输出变量赋值的操作
  • 使用out修饰符显式指出–此方法的副作用是通过参数向外输出值
  • 从语义上来讲–ref是为了“改变”,out是为了“输出”

数组参数

必须是形参列表中的最后一个,有params修饰
举例:String.Format方法和String.Split方法

具名参数

参数的位置不再受约束
优点:
  • 提高代码的可读性
  • 加上名字之后,参数位置不受约束

可选参数

参数因为具有默认值而变得“可选”
不推荐使用可选参数

扩展方法(this参数)

方法必须是公有、静态的,即被public static所修饰
必须是形参列表中的第一个,由this修饰
必须有一个静态类(一般类名为SomeTypeExtension)来统一收纳堆SomeType类型的扩展方法
举例:LINQ方法

各种参数的使用场景总结

传值参数:参数的默认传递方式
输出参数:用于出返回值外还需要输出的场景
引用参数:用于需要修改实际参数值的场景
数组参数:用于简化方法的调用
具名参数:提高可读性,参数顺序不受约束
可选参数:参数拥有默认值
扩展方法(thsi参数):为目标数据类型“追加”方法
C#知识学习—18 事件详解(3)C#知识学习—15 委托详解
  • Waline
Kitety
Kitety
独特为佳
公告
我曾经七次鄙视自己的灵魂
--卡里·纪伯伦
第一次,当它本可进取时,却故作谦卑;
第二次,当它在空虚时,用爱欲来填充;
第三次,在困难和容易之间,它选择了容易;
第四次,它犯了错,却借由别人也会犯错来宽慰自己;
第五次,它自由软弱,却把它认为是生命的坚韧;
第六次,当它鄙夷一张丑恶的嘴脸时,却不知那正是自己面具中的一副;
第七次,它侧身于生活的污泥中,虽不甘心,却又畏首畏尾。
 
最新评论
Loading...