zoukankan      html  css  js  c++  java
  • ref和out 传递参数(C#)

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

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

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

     1  //写一个方法计算一个int类型数组中每个元素的总和以及最大值和最小值
     2         /// <summary>
     3         /// 
     4         /// </summary>
     5         /// <param name="intArray"></param>
     6         /// <returns></returns>
     7         static void GatValue(int[] intArray, ref int sum, ref int max, ref int min)
     8         {
     9             
    10             sum = 0;
    11             max = intArray[0];
    12             min = intArray[0];
    13             for (int i = 0; i < intArray.Length; i++)
    14             { 
    15                 //总和
    16                 sum += intArray[i];
    17 
    18                 //最大值
    19                 if (max < intArray[i])
    20                 {
    21                     max = intArray[i];
    22                 }
    23 
    24                 //最小值
    25                 if (min > intArray[i])
    26                 {
    27                     min = intArray[i];
    28                 }
    29             }
    30         }
    View Code
    1  static void Main(string[] args)
    2         {   
    3             int[] intArray={1,2,3,4,5,6,7,8,9,10};
    4             int sum = 0, max = 0, min = 0;
    5             //int sum = 0, max = 0, min;     //如果min变量在使用的时候,没有赋值,在使用ref关键字传递参数的时候,就会报错,错误消息:“使用了未赋值的局部变量”
    6             GatValue(intArray, ref sum,ref max,ref min);
    7             Console.Write(sum+" "+max+" "+min);
    8             Console.ReadKey();
    9         }
    Mian函数
     1  static void Main(string[] args)
     2         {   
     3             int[] intArray={1,2,3,4,5,6,7,8,9,10};
     4            // int sum = 0, max = 0, min = 0;
     5             int sum = 0, max = 0, min;
     6             GatValue(intArray, ref sum,ref max,out min);
     7             Console.Write(sum+" "+max+" "+min);
     8             Console.ReadKey();
     9         }
    10 
    11 
    12 
    13   static void GatValue(int[] intArray, ref int sum, ref int max, out int min)
    14         {
    15             
    16             sum = 0;
    17             max = intArray[0];
    18             min = intArray[0];
    19             for (int i = 0; i < intArray.Length; i++)
    20             { 
    21                 //总和
    22                 sum += intArray[i];
    23 
    24                 //最大值
    25                 if (max < intArray[i])
    26                 {
    27                     max = intArray[i];
    28                 }
    29 
    30                 //最小值
    31                 if (min > intArray[i])
    32                 {
    33                     min = intArray[i];
    34                 }
    35             }
    36         }
    min变量out传递参数
     1   static void GatValue(int[] intArray, ref int sum, ref int max, out int min)
     2         {
     3             //这里要返回三个变量的值,只能是,通过返回值调用了
     4             sum = 0;
     5             max = intArray[0];
     6            // min = intArray[0];
     7             for (int i = 0; i < intArray.Length; i++)
     8             { 
     9                 //总和
    10                 sum += intArray[i];
    11 
    12                 //最大值
    13                 if (max < intArray[i])
    14                 {
    15                     max = intArray[i];
    16                 }
    17 
    18                 ////最小值
    19                 //if (min > intArray[i])
    20                 //{
    21                 //    min = intArray[i];
    22                 //}
    23             }
    24         }
    25 
    26 
    27 
    28   static void Main(string[] args)
    29         {   
    30             int[] intArray={1,2,3,4,5,6,7,8,9,10};
    31            // int sum = 0, max = 0, min = 0;
    32             int sum = 0, max = 0, min;
    33             GatValue(intArray, ref sum,ref max,out min);
    34             Console.Write(sum+" "+max+" "+min);
    35             Console.ReadKey();
    36         }
    错误的例子,out参数在使用的时候,必须在方法体内,为变量赋值

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

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

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

  • 相关阅读:
    Django 数据导入和导出(数据库的迁移方法)
    【转】JSON Web Token 入门教程
    【转】详解drf中的ModelViewSet
    【转】Django 多数据库联用
    【转】django.contrib.auth之authenticate函数源码分析
    【转】Django-rest-framework
    django 自带用户认证系统 以及 自定义用户认证系统
    DRF 中接口设计,接口参数校验问题总结
    my read wood / zelkova / elm
    db CouchDB 2.1.2
  • 原文地址:https://www.cnblogs.com/caofangsheng/p/4509860.html
Copyright © 2011-2022 走看看