1.参数传递默认都是传递栈空间里面存储的内容

2.如果添加了ref那么传递的都是栈空间地址,而不再是栈空间里面的内容

3.如果添加了out,那么传递的也是栈空间的地址

  //写一个方法计算一个int类型数组中每个元素的总和以及最大值和最小值
/// <summary>
///
/// </summary>
/// <param name="intArray"></param>
/// <returns></returns>
static void GatValue(int[] intArray, ref int sum, ref int max, ref int min)
{ sum = ;
max = intArray[];
min = intArray[];
for (int i = ; i < intArray.Length; i++)
{
//总和
sum += intArray[i]; //最大值
if (max < intArray[i])
{
max = intArray[i];
} //最小值
if (min > intArray[i])
{
min = intArray[i];
}
}
}
  static void Main(string[] args)
{
int[] intArray={,,,,,,,,,};
int sum = , max = , min = ;
//int sum = 0, max = 0, min; //如果min变量在使用的时候,没有赋值,在使用ref关键字传递参数的时候,就会报错,错误消息:“使用了未赋值的局部变量”
GatValue(intArray, ref sum,ref max,ref min);
Console.Write(sum+" "+max+" "+min);
Console.ReadKey();
}

Mian函数

  static void Main(string[] args)
{
int[] intArray={,,,,,,,,,};
// int sum = 0, max = 0, min = 0;
int sum = , max = , min;
GatValue(intArray, ref sum,ref max,out min);
Console.Write(sum+" "+max+" "+min);
Console.ReadKey();
} static void GatValue(int[] intArray, ref int sum, ref int max, out int min)
{ sum = ;
max = intArray[];
min = intArray[];
for (int i = ; i < intArray.Length; i++)
{
//总和
sum += intArray[i]; //最大值
if (max < intArray[i])
{
max = intArray[i];
} //最小值
if (min > intArray[i])
{
min = intArray[i];
}
}
}

min变量out传递参数

   static void GatValue(int[] intArray, ref int sum, ref int max, out int min)
{
//这里要返回三个变量的值,只能是,通过返回值调用了
sum = ;
max = intArray[];
// min = intArray[0];
for (int i = ; i < intArray.Length; i++)
{
//总和
sum += intArray[i]; //最大值
if (max < intArray[i])
{
max = intArray[i];
} ////最小值
//if (min > intArray[i])
//{
// min = intArray[i];
//}
}
} static void Main(string[] args)
{
int[] intArray={,,,,,,,,,};
// int sum = 0, max = 0, min = 0;
int sum = , max = , min;
GatValue(intArray, ref sum,ref max,out min);
Console.Write(sum+" "+max+" "+min);
Console.ReadKey();
}

错误的例子,out参数在使用的时候,必须在方法体内,为变量赋值

这里第四个代码段,里面,使用了out参数传递的变量min,在方法体内没有被赋值,运行的时候会报错:“ 控制离开当前方法之前必须对 out 参数“min”赋值 “

区别:ref传递的参数必须先赋值再使用;

out可以赋值也可以不赋值,但是在方法体内必须重新赋值。

最新文章

  1. The Safe Navigation Operator (&amp;.) in Ruby
  2. oracle 前滚和回滚
  3. C++ 类的静态成员及静态成员函数
  4. 【linux】linux下yum安装后Apache、php、mysql默认安装路径
  5. PHP连接MySQL报错:SQLSTATE[HY000] [2002] Can&#39;t connect to local MySQL server through socket &#39;MySQL&#39; (2)
  6. 【wikioi】1217 借教室
  7. QT做界面真是绝美,并且还可嵌入HTML与JS做界面(许多案例)
  8. js 魔鬼训练
  9. Asp.net网站的简单发布
  10. phpcms v9更改后台文章排序的方法
  11. Material04 MdCardModule和MdButtonModule综合运用
  12. C#之Excel操作
  13. 01_Linux系统系统语言查询,设置Xshell工具,中文显示,测试Xshell中文字符显示,Linux中文显示乱码设置
  14. Selenium + Python +CSV
  15. MessageChannel 消息通道
  16. 你不可不知的Java引用类型之——ReferenceQueue源码详解
  17. RabbitMQ 选型和对比
  18. shell脚本并发执行
  19. 利用python脚本(re)抓取美空mm图片
  20. 吴裕雄 15-MySQL LIKE 子句

热门文章

  1. java bean、List、数组、map和Json的相互转化
  2. C# 遍历DLL导出函数
  3. 导出websphere内存镜像
  4. iOS开发——iOS学习路线
  5. windows下Android利用ant自动编译、修改配置文件、批量多渠道,打包生成apk文件
  6. dll return a string
  7. 自己封装的android客户端http网络框架
  8. jquery-migrate.js
  9. C# 使用 SAP NCO3.0 调用SAP RFC函数接口
  10. linux ulimit调优