方法中参数前如果不加任何修饰符,则参数按值传递,不会改变原有值的值,当加入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修饰可以当做输入或者输出参数, |