c#学习体会:使用 ref 和 out 传递数组(downmoon)

来源:互联网 发布:windows server基础版 编辑:程序博客网 时间:2024/05/22 08:17

c#学习体会:使用 ref 和 out 传递数组(downmoon),希望与大家分享
1、与所有的 out 参数一样,在使用数组类型的 out 参数前必须先为其赋值,即必须由接受方为其赋值。例如:

 

public static void MyMethod(out int[] arr)
{
   arr 
= new int[10];   // 数组arr的明确委派
}


2、与所有的 ref 参数一样,数组类型的 ref 参数必须由调用方明确赋值。因此不需要由接受方明确赋值。可以将数组类型的 ref 参数更改为调用的结果。例如,可以为数组赋以 null 值,或将其初始化为另一个数组。例如:

 

 

public static void MyMethod(ref int[] arr)
{
   arr 
= new int[10];   // arr初始化为一个新的数组
}


下面的两个示例说明 out 和 ref 在将数组传递给方法上的用法差异。

 

示例 1
在此例中,在调用方(Main 方法)中声明数组 myArray,并在 FillArray 方法中初始化此数组。然后将数组元素返回调用方并显示。

 

using System;
class TestOut
{
   
static public void FillArray(out int[] myArray)
   
{
      
// 初始化数组(必须):
      myArray = new int[5{12345};
   }


   
static public void Main()
   
{
      
int[] myArray; // 初始化数组(不是必须的!)

      
// 传递数组给(使用out方式的)调用方:
      FillArray(out myArray);

      
// 显示数组元素
      Console.WriteLine("数组元素是:");
      
for (int i=0; i < myArray.Length; i++)
         Console.WriteLine(myArray[i]);
   }

}


输出
数组元素是:
1
2
3
4
5
示例 2
在此例中,在调用方(Main 方法)中初始化数组 myArray,并通过使用 ref 参数将其传递给 FillArray 方法。在 FillArray 方法中更新某些数组元素。然后将数组元素返回调用方并显示。

 

 

using System;
class TestRef
{
   
public static void FillArray(ref int[] arr)
   
{
      
// 根据需要创建一新的数组(不是必须的)
      if (arr == null)
         arr 
= new int[10];
      
// 否则填充数组,就可以了
      arr[0= 123;
      arr[
4= 1024;
   }


   
static public void Main ()
   
{
      
//初始化数组:
      int[] myArray = {1,2,3,4,5}

      
// 使用ref传递数组:
      FillArray(ref myArray);

      
//显示更新后的数组元素:
      Console.WriteLine("数组元素是:");
      
for (int i = 0; i < myArray.Length; i++)
         Console.WriteLine(myArray[i]);
   }

}


输出
数组元素是:
123
2
3
4
1024

 

原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 自来水往外喷水怎么办 手机有骚扰电话怎么办 半夜到南宁机场怎么办 得了水痘坐火车怎么办 香港账户被限制怎么办 司法拍卖车扣分怎么办 速递易已超期怎么办 e栈快递换微信怎么办 e栈快递柜打不开怎么办 小孩耳朵塞东西怎么办 把隐形眼镜吃了怎么办 街道分车位不公平怎么办 服务区修车被宰怎么办 2018高速逃费怎么办 高速不停车卡怎么办 独立显卡显存不够怎么办 rx470d买不到了怎么办? 南方避险基金到期怎么办 高铁票认证失败怎么办 高铁票三个小孩怎么办 12306取消三次后怎么办 外国人护照过期了怎么办 行李丢飞机上怎么办 学生票没次数了怎么办 去美国行李超重怎么办 12306密码找回失败怎么办 12306注册身份重复怎么办 12306身份信息重复怎么办 必修课没有选上怎么办 大学错过了选课怎么办 大学忘记选课了怎么办 火车网上购票儿童票怎么办 售票厅看见小偷怎么办 没赶上火车火车票怎么办 重庆到韩国签证怎么办 重庆去韩国签证怎么办 重庆办韩国签证怎么办 故宫网上预定后怎么办 坐游轮如果晕船怎么办 听听力反应慢怎么办? 毕业证照片丢了怎么办