C#中out和ref使用_.NET_编程开发_程序员俱乐部

中国优秀的程序员网站程序员频道CXYCLUB技术地图
热搜:
更多>>
 
您所在的位置: 程序员俱乐部 > 编程开发 > .NET > C#中out和ref使用

C#中out和ref使用

 2013/9/4 17:14:24  软谋在线软件培训  博客园  我要评论(0)
  • 摘要:1、out必须在方法中为其赋值,在调用的时候必须在变量的前面加上out关键字,侧重输出。2、ref修饰方法的参数,在调用的时候必须在变量的前面加上ref关键字,可以修改其值也可以不修改,侧重修改。3、out和ref只能传递变量不能传常量,传递的时候不是传递变量的值,而是传变量的地址。3、out在传递之前可以不赋初始值,因为在方法里面肯定会为out赋值,ref在传递之前必须要有值,因为在方法中有可能会用到参数的值。staticvoidTestOut(outinti){i=110
  • 标签:C# 使用

1、out必须在方法中为其赋值,在调用的时候必须在变量的前面加上out关键字,侧重输出。

2、ref修饰方法的参数,在调用的时候必须在变量的前面加上ref关键字,可以修改其值也可以不修改,侧重修改。

3、out和ref只能传递变量不能传常量,传递的时候不是传递变量的值,而是传变量的地址。

3、out在传递之前可以不赋初始值,因为在方法里面肯定会为out赋值,ref在传递之前必须要有值,因为在方法中有可能会用到参数的值。

class="code_img_closed" src="/Upload/Images/2013090417/0015B68B3C38AA5B.gif" alt="" />logs_code_hide('7e4ef25f-e41c-403a-aac2-de5b7e9f2325',event)" src="/Upload/Images/2013090417/2B1B950FA3DF188F.gif" alt="" />
static void TestOut(out int i)

{

   i=110;//out中一定要对变量赋值

}

static void TestRef(ref int i)

{

  i+=1;//ref中可以对变量赋值也可以不赋值

}

staitc void Main(string[] args)

{

   int i=12;

   TestOut(out i);

   //TestOut(out 12);这样就报错,只能传变量不能传常量

   Console.WriteLine(i);

   int[] arr={1,2,4,6,3};

   int min=0;

   int max=0;

   GetMaxAndMin(arr,out max,out min);

   Console.WriteLine(min+":"+max);

   int num;

   //TestRef(ref num);//这样就有可能报错,因为方法中可能会用到参数的值,而在ref里面没有对变量赋值。

   //TestOut(out num);//这样不会报错,因为out里面一定会对变量赋值。

   //Console.WriteLine(num);

}

static void GetMaxAndMin(int[] arr,out int max,out int min)

{

    //排序 Array.Sort(arr);

    //冒泡排序

    for(int i=0;i<arr.Length-1;i++)

    {

       for(int j=0;j<arr.Length-1-i;j++)

       {

          if(arr[j]>arr[j+1])

          {

               int temp=arr[j];

               arr[j]=arr[j+1];

               arr[j+1]=temp;

          }

       }
    }

    max=arr[arr.Length-1];

    min=arr[0];

}
View Code

 

附图(理解out和ref只是传递的地址而不是值):

 

注:以上内容均属软谋原创,转载请注明出处。

发表评论
用户名: 匿名