首页 > 编程语言 >C#--ref和out参数

C#--ref和out参数

时间:2023-04-29 16:14:15浏览次数:44  
标签:Console C# -- int 参数 WriteLine ref out

1,普通参数

1.1,带普通参数的方法
        static void fun(int a)//普通的函数参数是将a的值传入的,单独创建一个临时空间存a的值,函数结束了a的临时内存空间就不存在了
        {
            a = a + 3;
            Console.WriteLine($"普通参数,a的值为{a}");
        }
1.2,调用方法
            int a;
            a = 5;
            Console.WriteLine($"普通参数,执行前,a的值为{a}");//5
            fun(a);//8
            Console.WriteLine($"普通参数,执行后,a的值为{a}");//5
            Console.WriteLine("-------------------------------");
1.3,输出结果
普通参数,执行前,a的值为5
普通参数,a的值为8
普通参数,执行后,a的值为5

2,ref参数

2.1,带ref参数的方法
        static void fun2(ref int a)//加了ref的参数,是将a的内存地址传入
        {
            a = a + 3;
            Console.WriteLine($"ref参数,a的值为{a}");
        }
2.2,调用方法
            int a2;
            a2 = 5;//【注意1,使用ref 必须在 调用方法前 对其进行初识化操作,如果没有初始化就报错】
            Console.WriteLine($"ref参数,执行前,a2的值为{a2}");//5
            fun2(ref a2);//8
            Console.WriteLine($"ref参数,执行前,a2的值为{a2}");//8
2.3,输出结果
ref参数,执行前,a2的值为5
ref参数,a的值为8
ref参数,执行前,a2的值为8

3,out参数

3.1,带out参数的方法
        static void fun3(int a, int b, out int max, out int min)
        {
            //if (max > min)//没有初始化,直接报错
            //{

            //}
            if (a >= b)
            {
                max = a;//【注意2,out 的使用必须要在 方法内 进行 初始化 】
                min = b;
            }
            else
            {
                max = b;
                min = a;
            }
        }
 3.2,调用方法 
            int a3, b3;
            a3 = 100;
            Console.WriteLine($"out参数,执行前,a3的值为{a3}");
            //Console.WriteLine($"out参数,执行前,b3的值为{b3}");//没有初始化,直接报错
            fun3(2, 3, out a3, out b3);
            Console.WriteLine($"out参数,执行后,a3的值为{a3}");
            Console.WriteLine($"out参数,执行后,b3的值为{b3}");
3.3,输出结果
out参数,执行前,a3的值为100
out参数,执行后,a3的值为3
out参数,执行后,b3的值为2

 

4,总结

1、ref指定的参数在函数调用时候必须初始化,不能为空的引用。而out指定的参数在函数调用时候可以不初始化;

2、out指定的参数在进入函数时会清空自己,必须在函数内部赋初值。而ref指定的参数不需要。

3, 总结:ref有进有出,out只出不进。

 

  

  

标签:Console,C#,--,int,参数,WriteLine,ref,out
From: https://www.cnblogs.com/baozi789654/p/17364105.html

相关文章

  • 对文件的操作
    /*ifstream读文件ofstream写文件fstream读写文件这个三个的头文件是fstreamofstreamoutfile;*/写文件 ofstream h1; /fstreamh1h1.open("user.txt");h1<<name<<"\t";//"\t"换行h1<<age<<endl; //endl表示换行h1.clos......
  • 【题解】P3920 [WC2014]紫荆花之恋
    思路点分树+根号重构+*高速平衡树。点分树的两种常见用法无非是直接做和路径有关的暴力还有处理这种有关单点和整树的问题,后者的另一个经典题目是P3241[HNOI2015]开店。回到这个题目,处理路径考虑先上点分治,暂时不考虑强制在线的限制。因为每次加上一个新点,所以可以考......
  • Debug Assertion Failed!:Expression: can't dereference out of range vector iterato
    1#include<iostream>2#include<vector>3usingnamespacestd;4boolFind(inttarget,vector<int>array){5autobegin=array.begin(),end=array.end(),mid=begin+(end-begin)/2;6while((target!=*mid)&&a......
  • vuepress 静态博客搭建
    基于npminitvuepress-theme-hopevuepressvuepress是工程目录vuepress/src是博客目录新增博客cdvuepressnpminitvuepress-theme-hopeaddmyblog1就会在vuepress/src的同级目录下创建一个myblog1目录。参考https://theme-hope.vuejs.press/zh/cookbook/t......
  • 14 进程的等待与唤醒机制
    进程的等待结构:kwlst_t结构用于挂载等待的进程;经常被包含在信号量等结构,是用于保护访问受限的贡献资源;进程等待:krlsched_wait函数:获取当前正在运行的进程,设置进程状态为等待状态,执行脱链操作,并将进程加入等待结构;进程唤醒:krlsched_up函数:从等待数据结构中获取进程,然后设置......
  • 曲线积分与曲面积分
    重积分是对平直空间的积分,现在我们想要研究弯曲空间上的积分。这种积分可以根据其“物理意义”分为两类:一类是对弯曲空间上的标量做积分,这类问题可以归约为“给定密度求质量”,例如给定每点处的线密度求曲线的质量,给定每点处的面密度求曲面的质量;一类是对弯曲空间上的向量做积分,例......
  • Codeforces Round 854 补题总结
    CodeforcesRound854补题总结前言昨天做这套题很不顺,今天补完题大概总结一下。总结RecentActions按题意模拟即可,考虑到前\(n\)个数一定始终在后\(m\)个数的前面,所以说当当前队列中如果没有出现\(x\)而在第\(i\)轮放进了\(x\),那么当前在队首的编号小于\(n\)的数......
  • Windows 11 启用 Hyper-V 之后网络上传速度异常慢解决方案
    最近在开发用的台式机上启用了Windows的Hyper-V虚拟化功能,利用虚拟机运行了一台WindowsServer2022和一台UbuntuServer,为了方便别的机器直接访问这两台虚拟机,所以网络采用了外部网络桥接的模式,让虚拟机和物理机保持在了同一网段。为了实现在这一目的,所以创建了一个虚......
  • Java原码、反码、补码
    二进制的最高位是符号位:0表示正数,1表示负数(0->01->-)正数的原码、反码、补码都是一样(三码合一)负数的反码=它的原码符号位不变,其它位取反(0->1,1->0)负数的补码=它的反码+1,负数的反码=负数的补码-10的反码、补码都是0java没有无符号数,换言之,java中的数都是有符号的在......
  • Cygwin、MSYS2 Bash封装函数restart,重启Windows程序进程向导,输入序号一键重启对应进程
    概述作用:终端输入restart,根据菜单提示输入序号重启特定的软件或进程,定义的重启函数太多不便于记忆的情况,特别是手机远程终端(如:JuiceSSH)连接的情况下,减少手动输入和误操作,其中判定浏览器进程使用了另一篇文章中预定的函数wmicps,ps2为指向wmicps的alias(详见:https://www.cnblog......