zoukankan      html  css  js  c++  java
  • C#值参数、引用参数和输出参数

      一、值参数:在使用参数时,是把一个值传递给函数使用的一个变量。对函数中此变量的任何修改都不会影响函数调用中指定的参数。(由于函数只有一个返回值,不能用作参数的多个变量值)。

      二、引用参数:即函数处理的变量与函数调用中使用的变量相同,而不仅仅是值相同的变量。因此,对这个变量的任何改变都会影响用作参数的变量值。需用ref关键字指定参数。用作ref参数的变量有两个限制,由于函数可能会改变引用参数的值,所有必须在函数调用中使用“非常量”变量。其次,必须使用初始化过的变量。

      三、输出参数:out关键字,指定所给定的参数是一个输出参数。Out关键字的使用方式与ref关键字相同,实际上,他的执行方式与引用参数完全一样,因为在函数执行完毕后,该参数的值将返回给函数调用中使用的变量。

      四、引用参数和输出参数的一些重要区别:

    1. 把未赋值的变量用作ref参数是非法的,但可以把未赋值的变量用作out参数。
    2. 另外,在函数使用out参数时,必须把它看成是尚未赋值。即调用代码可以把已赋值的变量用作out参数,但存储在该变量中的值会在函数执行时丢失。

      下面通过三个方法分别对三种参数传递进行说明:

         static void AMethod(int i)//值传递
            {
                i = i + 1;
            }
            static void BMethod(ref int i)//引用传递
            {
                i = i + 1;
            }
            static void CMethod(out int i, out string j)//输出传递
            {
                i = 6;//输出参数函数必须在函数内部进行初始化赋值
                j = "return";
            }
            static void Main(string[] args)
            {
                int i = 1; string j = "C#";//输出参数赋值
                AMethod(i);//调用值传递函数
                Console.WriteLine("(1)、 i=1;经过AMethod方法(加1),值传递之后  i=" + i);
                Console.WriteLine();
                BMethod(ref i);//调用引用传递函数
                Console.WriteLine("(2)、 i=1;经过BMethod方法(加1),ref传递之后 i=" + i);
                Console.WriteLine();
                CMethod(out i, out j);//调用输出传递函数
                Console.Write("(3)、 i=1;经过CMethod方法(加1),out传递之后 ");
                Console.WriteLine("i=" + i + " j=" + j); Console.WriteLine();
                Console.ReadKey();
            }

      结果如下显示:

      

  • 相关阅读:
    tcp/ip ---IP路由选择
    tcp/ip --IP:网际协议
    tcp/ip ---以太网和IEEE 802封装
    tcp/ip ---链路层
    internet与Internet的区别
    TCP/IP ---封装与分用
    TCP/IP ---互联网的地址
    SpringMvc 系统启动时加载数据到内存中
    hadoop-17-hive数据库元数据查看
    hadoop-16-sqoop导入oracle数据
  • 原文地址:https://www.cnblogs.com/dyf96966/p/5483411.html
Copyright © 2011-2022 走看看