必威体育Betway必威体育官网
当前位置:首页 > IT技术

C#总结---方法的out参数和ref参数

时间:2019-08-18 05:12:12来源:IT技术作者:seo实验室小编阅读:77次「手机版」
 

ref

我们知道,在c#中,当我们在一个方法中想要访问另一个方法中的变量的时候,有两种解决方案---参数和返回值。但当需要返回多个值,并且是不同类型的值的之后应该怎么办呢?解决方案可以是

(1)将所有类型数据转换成字符串类型,到最后再都转换回来,这样就比较麻烦了

(2)利用方法的out参数和ref参数

下面要跟大家介绍的就是第二个简单的方法:方法的out和ref参数

在讲解方法的out和ref参数之前我们先看看最普通的参数传递

        static void Main(string[] args)
        {
            int number1=10;
            int number2 = 20;
            int sum = AddNumber(number1, number2);

            console.WriteLine(number1); ;
            Console.WriteLine(number2);
            Console.WriteLine(sum);

            Console.ReadKey();
        }
        public static int AddNumber( int num1, int num2)
        {
            return num1 + num2;
        }

显而易见,此程序的返回值是10,20,30

方法的out参数(与最简单的参数传递差别已用红框标出)

此程序的返回值为10,200,210

概念:out是内部为外部变量赋值,out一般用在函数需要有多个返回值的场所

总结:1.如果方法用参数out修饰了,那么参数在方法外也要用out修饰

   2. 如果方法的参数用out修饰了,那么这个参数必须在方法里进行赋值

   3.当参数在方法外进行赋值时,参数out把方法里的值传到了方法外,所以最后参数值为在方法里赋的值

例题1:

        static void Main(string[] args)
        {
            int number1=10;
            int number2=20;
            int sum = AddNumber( number1, out  number2);

            Console.WriteLine(number1); ;
            Console.WriteLine(number2);
            Console.WriteLine(sum);

            Console.ReadKey();
        }
        public static int AddNumber(int  num1, out  int num2)
        {
            num1 = 100;
            num2 = 200;
            return num1 + num2;
        }
此程序的返回值为什么呢???

开始我理所应当的认为,此程序的返回值为100,200,300,但是大家再仔细看一看,num2没有用out修饰哦,这可是一个大坑哦!

所以,最后的结果是10,200,210

方法的ref参数(与最简单的参数传递差别已用红框标出)

此程序的返回值为10,200,210

很容易可以看出,方法的out和ref只是修改参数,那么他们最后的返回值是相同的

总结:1.如果方法用参数out修饰了,那么参数在方法外也要用out修饰

   2.如果方法用参数ref修饰了,那么参数在方法外必须赋初值

那么当这种情况呢?

例题2:

        static void Main(string[] args)
        {
            int number1=10;
            int number2=20;
            int sum = AddNumber( number1, ref number2);

            Console.WriteLine(number1); ;
            Console.WriteLine(number2);
            Console.WriteLine(sum);

            Console.ReadKey();
        }
        public static int AddNumber(int  num1, ref int num2)
        {
            num1 = 100;
            num2 = 200;
            return num1 + num2;
        }
例题1和例题2,只有num2修饰的差别,例题1用的是out修饰,返回值为10,200,210;

                                                            例题2用的是ref修饰,返回值为100,200,300;

由此可以看出参数out和ref修饰的差别:

ref可以把值传到方法里,也可以把值传到方法外

out只可以把值传到方法外

相关阅读

2018天猫Outlets大牌长驻标准是什么?

据了解,天猫Outlets大牌长驻已经开放了,很多的网友都喜欢在这个平台上面购物,因为都是大牌的商品,但是价格都很优惠,作为商家,您知道天

OutputStreamWriter的概述和使用

需求:读取项目根目录下的InputStreamReaderDemo1.java,并输出到命令行        分析:                   

C#常见面试题

1.       重载和重写的区别  1)        所处位置不同重载在同类中重写在父子类中2)        定义方式不

C# 使用FileSystemWatcher类来对一个日志文件的变化进

C# 使用FileSystemWatcher类来对一个日志文件的变化进行实时监测 应用场景描述:在我的工作中,遇到这么一个情况,有一个没有源码的程

C# 如何在Winfrom程序中使用TeeChart插件

1.首先我们需要以下几个dll,第一个和第二个需要在项目中引用,第三个是用来导入ToolBox的,第四个是用来汉化的的,语言是可以选择的。默

分享到:

栏目导航

推荐阅读

热门阅读