美文网首页
C#之ref和out

C#之ref和out

作者: 困卡 | 来源:发表于2017-04-02 23:26 被阅读0次

    思考下面的代码会输出什么值。

     static void Main()
            {
                int number = 10;
                add(number);
                Console.WriteLine(number);
                Console.ReadLine();
            }
    
            static void add(int number)
            {
                number = number+number;
    
                Console.WriteLine(number);
            }
    
    ref用途

    ref用来修饰方法的参数,被ref修饰的参数,在调用的时候,会传递过来的是一个引用。当在方法中修改参数时,那么调用方传递过来的那个变量的值也会被改变。在将要调用的方法的参数中,如果有ref修饰的参数,那么该参数需要在传递之前初始化。
    看下面的例子来理解:

            static void Main()
            {
                int x = 10;
                TestRef(ref x); //传的参数是x所在的内存地址
                Console.WriteLine(x); // 20
            }
    
            static void TestRef( ref int number1) //这里是指向值为10的内存地址
            {
                Console.WriteLine("TestRef输出"+ number1); //10
                number1 += number1;
                Console.WriteLine("TestRef输出" + number1);// 20
            }
    
    out用途

    out也是用来修饰方法的参数,跟ref很类似,被out修饰的参数,在调用的时候,会传递过来的是一个引用。当在方法中修改参数时,那么调用方传递过来的那个变量的值也会被改变。在将要调用的方法的参数中,如果有out修饰的参数,那么该参数可以不需要在传递之前初始化。
    看下面的例子

            static void Main()
            {
                int y;
                TestOut(out y);
                Console.WriteLine(y); //30
    
                Console.ReadLine();
            }
    
            static void TestOut(out int number1)
            {
                number1 = 30;
                Console.WriteLine("TestOut输出" + number1); // 30
            }
    
    ref和out的不同点:

    ref修饰的参数在传递之前必须要初始化
    out修饰的参数在传递之前可以不初始化

    相关文章

      网友评论

          本文标题:C#之ref和out

          本文链接:https://www.haomeiwen.com/subject/fylnottx.html