c#学习2——值参数、引用参数、输出参数

来源:互联网 发布:c语言网站 编辑:程序博客网 时间:2024/06/05 18:41

值参数、引用参数、输出参数

2.1值参数(value parameters)未用 ref out 修饰符声明的参数为值参数。值参数在调用该参数所属的函数成员(方法、实例构造函数、访问器或运算符)时开始存在,并用调用中给定的自变量的值初始化。当返回该函数成员时值参数停止存在。出于明确赋值检查的目的,值参数被视为初始已赋值。

2.2 引用参数(reference parameters

ref 修饰符声明的参数是引用参数。引用参数不创建新的存储位置。相反,引用参数表示的是那个在对该函数成员调用中被当作自变量的变量所表示的同一个存储位置。因此,引用参数的值总是与基础变量相同。

下面的明确赋值规则适用于引用参数。

●变量在可以作为引用参数在函数成员调用中传递之前,必须已明确赋值即必须被初始化。

●在函数成员内部,引用参数被视为初始已赋值。

●在结构类型的实例方法或实例访问器内部,this 关键字的行为与该结构类型的引用参数完全相同

2.3输出参数(output parameters

out 修饰符声明的参数是输出参数。输出参数不创建新的存储位置。相反,输出参数表示的是那个在对该函数成员调用中被当作自变量的变量所表示的同一个存储位置。因此,输出参数的值总是与基础变量相同。下面的明确赋值规则应用于输出参数。变量在可以作为输出参数在函数成员调用中传递之前不一定要明确赋值。

●在正常完成函数成员调用之后,每个作为输出参数传递的变量都被认为在该执行路径中已赋值。

●在函数成员内部,输出参数被视为初始未赋值。

●函数成员的每个输出参数在该函数成员正常返回前都必须已明确赋值。

●在结构类型的实例构造函数内部,this 关键字的行为与结构类型的输出参数完全相同

引用参数和值参数区别
      
引用参数相当于是引用参数的地址,函数定义时和函数调用时都必须用 ref 关键字,在调用函数参数的值改变将会影响到参数的实际值,而值参数传递时,先开辟一块内存块,然后拷贝一份放到新开辟的内存块中,这样调用时是调用新内存块中的值,修改也不会使原来的值改变。

引用参数和输出参数区别
      
引用参数在传递之前必须进行初始化,而输出参数传递不需要。两个都可以在内部修改他的值
具体什么时候用,ref主要还是对于值类型,out可以处理一个没有初始化的数组。
举例:

using System;

using System.Collections.Generic;

using System.Text;

namespace ConsoleApplication1

{

    class Program

    {

        static void valueparameters(int x, int y)

        {

            ++x;

            ++y;

        }

        static void referenceparameters(ref int x, ref int y)

        {

            ++x;

            ++y;

        }

        static void outputparameters(out int m, out  int n, ref int z)

        {

            m = 12;

            n = 12;

            z++;

        }

        static void Main(string[] args)

        {

            int x = 10;

            int y = 20;

            valueparameters(x, y);

            Console.WriteLine("x={0},y={1}", x, y);

            referenceparameters(ref x, ref y);

            Console.WriteLine("x={0},y={1}", x, y);

            int m, n;

            int z = 1;

            outputparameters(out m, out n, ref z);

            Console.WriteLine("m={0},n={1},z={2}",m,n,z);

        }

    }

    /*结果:

x=10,y=20

x=11,y=21

m=12,n=12,z=2

请按任意键继续. . .

    */

原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 淘宝退款了又收到货怎么办 商家收货后拒绝退款怎么办 申请退货退款卖家不处理怎么办 淘宝买东西换货卖家不发货怎么办 淘宝自动默认付款没发货怎么办 支付宝支付失败可钱扣了怎么办 苹果nfc感应坏了怎么办 老鼠添过的盘子怎么办 ie浏览器页面显示网页错误怎么办 Ⅵvo手机声音小怎么办 小米手机预约错了怎么办 小米note二手没解锁怎么办 艾灸后脸色越黑怎么办 淘宝软件类目不能上架宝贝怎么办 ae中没有mpg格式怎么办 淘宝小二处理不公怎么办 遇到卖保险的人怎么办 租房合同没理家电清单怎么办 普雪油烟机坏了怎么办 我累了 真的累了怎么办 u盘15g变成4g了怎么办 属兔的买了东户怎么办 玩时时彩输了2万怎么办 胸变的又软又小怎么办 u盘16g变成4g了怎么办 1岁宝宝吃了就吐怎么办 脚崴了肿了很痛怎么办 九格拼图5在9那怎么办 4s锁屏密码忘了怎么办 6p触屏偶尔乱跳怎么办 新办劳务公司的劳务资质怎么办 汽车没电了打不着火怎么办 吃凉的甜的牙疼怎么办 学车对点对不上怎么办 发现老公有外遇最明智的怎么办 想开个童装店但是没经验怎么办 母乳不够吃宝宝又不喝奶粉怎么办 掉头发很厉害怎么办有什么偏方 红米2a刷死机了怎么办 公司退市我们买的股票怎么办 黑魂3把npc杀了怎么办