参数修饰符:

  1. 无参数修饰符:如果一个参数没有任何参数修饰符修饰,那么认为它是值传递,意味着方法内部收到的是实参数据的副本
  2. out:输出参数由方法内部进行赋值,(引用传递),如果方法内部没有给被out修饰的输出参数赋值,就会出现编译报错。out最大的用途就是只调用一次方法便会产生多个返回值。(C#7.0中实现一次方法返回多个返回值,可以使用元组)
  3. ref:调用者赋初始值,(引用传递),在方法内部可以对参数进行操作,也可以不对它进行操作,但前提是ref修饰的参数是有初始值的。

out 和 ref 区别:

  • out修饰的参数必须在方法内部进行操作,而ref随意
  • out传参时,如果参数时局部变量,可以不用对其赋值,因为在其方法内部一定存在赋值操作
  • ref修饰的变量,其实参必须有初始值,因为方法中不一定对其有赋值操作。

代码验证如下:

        static void Main(string[] args)
{
// 1.out 操作
string str_out;
doOut(out str_out);
Console.WriteLine($"执行doOut后的str值为:{str_out}");
Console.WriteLine("----------------");
// 2.ref操作
string str_ref = "ref修饰的参数一定要提前赋值,否则会报错";
doRef(ref str_ref);
Console.WriteLine("----------------");
// 3.无参数修饰符
string str = "无参数修饰符";
Console.WriteLine($"执行无参数修饰符操作之前:{str}");
doWrite(str);
Console.WriteLine($"执行无参数修饰符操作之后:{str}");
Console.WriteLine("----------------");
} /// <summary>
/// out操作
/// </summary>
/// <param name="s"></param>
public static void doOut(out string s)
{
// out 修饰的参数,在方法内部必须进行赋值相关的操作,否则会报错
s = "out修饰的参数需要在方法内部进行了操作,且原始数据也存在改动";
Console.WriteLine(s);
} /// <summary>
/// ref操作
/// </summary>
/// <param name="s"></param>
public static void doRef(ref string s)
{
// ref 修饰的参数,在方法内部可以不对它进行相关的操作,但参数一定要提前赋值
Console.WriteLine(s);
} /// <summary>
/// 无参数修饰符操作
/// </summary>
/// <param name="s"></param>
public static void doWrite(string s)
{
// 无参数修饰符,传入的实参相当于原始数据的一个副本,本质是值传递,并不会对实参本身的数据产生影响
s = "没有任何参数修饰符";
Console.WriteLine(s);
}

操作截图:

最新文章

  1. Pyhton的发展历程
  2. 导出DBF,并且提供下载 [转]
  3. 【LoadRunner】OSGI性能测试实例
  4. kali linux系列之启用vpn
  5. 【MySQL】MySQL同步报错-&gt; Last_IO_Error: Got fatal error 1236 from master when reading data from binary log
  6. Chrome不支持本地Ajax请求解决?
  7. tomcat下出现The file is absent or does not have execute&amp;
  8. Ubuntu彻底删除mysql
  9. Postman----模拟服务器返回数据
  10. 迁移git
  11. RHEL7下用本地光盘或镜像iso文件做yum源
  12. 父div的透明度不影响子div透明度
  13. MySQL高性能优化系列-目录
  14. 类加载(四):spring-boot-loader 模块
  15. Git-TortoiseGit的安装和配置
  16. 冲刺Two之站立会议3
  17. JQuery插件autocomplete使用说明文档
  18. Django运算符表达式
  19. OpenSL ES 查询设备支持的SL Profiles
  20. display:table; 也可以实现 div 始终和内包的图片大小相同

热门文章

  1. 炫酷科技感黑客感瀑布流html代码
  2. vulnhub靶场之FUNBOX: GAOKAO
  3. Vue3+TypeScript 项目中,配置 ESLint 和 Prettier
  4. 如何通过Java应用程序添加或删除 PDF 中的附件
  5. drf-day4——序列化类常用字段和字段参数、序列化类source用法、序列化类定制字段返回内容的两种方式、序列化类的多表关联反序列化保存、反序列化字段校验、ModelSerializer的使用
  6. 快速入门API Explorer
  7. 从实现到原理,聊聊Java中的SPI动态扩展
  8. Spring框架-IoC核心
  9. spark数据清洗
  10. Mac 创建Python3虚拟环境