普通参数是“值类型传递拷贝,引用类型传递引用”,但是都不能在函数内部修改外部变量的指向(p.Age=5不是可以吗?),这时候要用ref或者out(相当于把变量都传进去了),他们的作用不同:ref的作用“方法内部修改外部变量的引用”;out的作用“方法内部给外部变量初始化,相当于一个函数多个返回值”。

1、使用ref型参数时,传入的参数必须先被初始化,方法中可以不赋值。对out而言,必须在方法中对其完成初始化,方法外部不用初始化,初始化也没用。

2、使用ref和out时,在方法的参数和执行方法时,都要加ref或out关键字。以满足匹配。

3、out适合用在需要retrun多个返回值的地方,而ref则用在需要被调用的方法修改调用者的引用的时候。

应用:

1、交换两个变量的值;

2、int.TryParse():if(int.TryParse(s,out i)),返回值表示是否转换成功,out参数表示转换成功的值。

using System;

using System.Collections;

using System.Collections.Generic;

using System.Linq;

using System.Text;

using System.Threading.Tasks;

namespace TestConsole

{

class Program

{

static void Main(string[] args)

{

int i = 1;

int j = 2;

int k;

int result=Template(i,j,out k);

Console.WriteLine(result+","+k);

Console.ReadKey();

}

public static int Template(int i,int j, out int k)

{

i = i + j;

j = i - j;

i = i - j;

k = j;

return i;

}

}

}

更多技术请关注

最新文章

  1. 代码的坏味道(20)——过度耦合的消息链(Message Chains)
  2. 一步步开发自己的博客 .NET版(3、注册登录功能)
  3. catalog备份数据库及RMAN存储脚本
  4. noi 8780 拦截导弹
  5. SharePoint 2016 Beta 2 使用体验
  6. Linus:为何对象引用计数必须是原子的
  7. Sicily connect components in undirected graph
  8. BZOJ 1034: [ZJOI2008]泡泡堂BNB( 贪心 )
  9. 使用cocoapods install友盟时报错Error installing UMengAnalytics
  10. eclipse中console的输出行数控制
  11. 搞java的都土鳖
  12. [PHP基础]有关isset empty 函数的面试题
  13. mac eclipse maven -solved
  14. Task Asnyc 异常问题
  15. Unity Jobsystem 详解实体组件系统ECS
  16. APIView和View的区别
  17. Linux---CentOS 定时运行脚本配置
  18. BQMeetup
  19. java struts2入门学习---拦截器学习
  20. 基于ASP.NET MVC的ABP框架入门学习教程

热门文章

  1. 【转载】TCP粘包问题分析和解决(全)
  2. PHP中的多行字符串传递给JavaScript方法两则
  3. mtk机型的一次救砖经历
  4. javascript return 跟 break区别
  5. openwrt 编译 gmediarender
  6. 杭电(hdu)1181 变形课
  7. CH 5402 选课(分组背包+树形DP)
  8. java 正则表达式 -Regular Expression
  9. 如何在cowboy应用中指定mnesia数据库路径
  10. servlet的<url-pattern>