黑马程序员技术交流社区

标题: 方法中参数修饰符 [打印本页]

作者: 孤神法法    时间: 2014-3-14 15:39
标题: 方法中参数修饰符
方法中参数前如果不加任何修饰符,则参数按值传递,不会改变原有值的值,当加入out时候,参数作为输出参数,在方法中必须初始化该参数,并且是按地址传递,改变接受该参数的值,当用ref修饰时,参数则可以理解为既可以当做输出参数,也可以当做输入参数,那么响应的在方法体中可以对该参数初始化或者不初始化!下面举例说明
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace @ref
{
    class Program
    {
        static void Main(string[] args)
        {
            int number = 10;
            int result=Test(number);
            Console.WriteLine("number的值为:{0},result的值为:{1}",number,result);
            Console.ReadKey();
        }
       public static int Test(int a)
        {
            a = a+100;
            return a;
        }
    }
}
该参数按值传递,不会改变number的值,
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace @ref
{
    class Program
    {
        static void Main(string[] args)
        {
            int number = 10;
            int result=Test(out number);
            Console.WriteLine("number的值为:{0},result的值为:{1}",number,result);
            Console.ReadKey();
        }
       public static int Test(out int a)
        {
            a = 1;
            a = a+100;
            return a;
        }
    }
}
该参数是按地址传递,在方法体中必须初始化,number的值会改变!
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace @ref
{
    class Program
    {
        static void Main(string[] args)
        {
            int number=5;
            int result=Test(ref number);
            Console.WriteLine("number的值为:{0},result的值为:{1}",number,result);
            Console.ReadKey();
        }
       public static int Test(ref int a)
        {
            a = 13;//此处不省略则可以理解为输出参数,省略则可以理解为输入参数         
            a = a+100;
            return a;
        }
    }
}
ref修饰可以当做输入或者输出参数,
作者: 许庭洲    时间: 2014-3-14 18:40
值得学习ing!




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2