目录
ref,out区别
out传值
1.定义方法时,参数用out修饰,在调用该方法的时候,参数也需要用out修饰。
2.在定义方法时,必须给参数赋初值。
2.在调用该方法时,可以赋初值,也可以不赋初值。
4.out这个单词是“出去”的意思,所以参数加out就是将方法里面赋的那个值传到外面去了,方法外面赋不赋值都不起作用,所以说out只能将在方法里面赋的初值传出去,但不能将外面赋的值传入。
5.out一般用在函数需要有多个返回值的场所
下面这个例子就是使用out传值
扫描二维码关注公众号,回复:
9754166 查看本文章
class Program
{
static void Main(string[] args)
{
//int number1=90; //参数使用out修饰,AddNumber方法外面也可以赋值,但是调用方法后的结果仍然是110
int number1; //参数使用out修饰,AddNumber方法外面可以不给变量赋值
int sum=AddNumber(out number1); //AddNumber方法中参数用out修饰,调用此方法时,参数也需要用out修饰
Console.WriteLine(sum); //显示的结果为110
Console.ReadKey();
}
public static int AddNumber(out int num1)
{
num1=100; //方法的参数用out修饰,必须在方法里面给它赋值
return num1+10; //无论方法外面num1的值是多少,返回结果都是110
}
}
out一般用在函数需要有多个返回值的场所,下面这个例子就是用out传值,有三个返回值
class Program
{
static void Main(string[] args)
{
int number1;
int number2;
int sum = Sum(out number1,out number2); //调用Sum方法
Console.WriteLine("{0},{1},{2}", number1, number2, sum); //显示3个值:10,20,30
Console.ReadKey();
}
public static int Sum(out int num1, out int num2)
{
num1 = 10; //使用out,必须在方法里面赋初值,第一个参数值为10
num2 = 20; //使用out,必须在方法里面赋初值,第二个参数值为20
return num1 + num2; //返回两个数之和
}
}
ref传值
1.ref的用法和out有所不同,相同点是,ref和out一样,方法中的参数用ref修饰,调用此方法的时候参数也需要用ref修饰。
2.不同的是,out只能将值传出,但是ref既可以传入,也可以传出。想要传入,必须在方法外赋值,也就是说,传入方法中的参数必须现在外面被初始化。方法里面可以赋初值,也可以不赋初值。
下面这段代码,在Show方法中没有给num1,num2赋初值,在调用该方法时,给参数赋了初值10和20,这时候,调用show方法的时候,会将10,20传进show方法中,然后在将求和结果30返回,这就是ref将值传入。
class Program
{
static void Main(string[] args)
{
//ref 用的时候必须要给方法外这个变量赋初值,和out有区别,out可以把方法里的值传出去,ref可以把值传到方法里,又可以把值传到方法外
int number1=10 ;
int number2=20 ;
int sum = Show(ref number1, ref number2);
Console.WriteLine("{0}",number1);
Console.WriteLine("{0}", number2);
Console.WriteLine("{0}", sum); //显示结果30
Console.ReadKey();
}
public static int Show(ref int num1, ref int num2)
{
return num1 + num2;
}
}
而下面这段代码,在show方法中给参数赋了初值100,200,在调用该方法的时候也赋了初值,这时候,在程序在调用show方法的时候,先将10,20的值传进show方当中,但是此时,里面两个参数有了初值100和200,这时候返回传出的结果四100+200,也就是传出去300。即ref可传入,也可传出。
static void Main(string[] args)
{
//ref 用的时候必须要给方法外这个变量赋初值,和out有区别,out可以把方法里的值传出去,ref可以把值传到方法里,又可以把值传到方法外
int number1=10 ;
int number2=20 ;
int sum = Show(ref number1, ref number2);
Console.WriteLine("{0}",number1); //100
Console.WriteLine("{0}", number2); //200
Console.WriteLine("{0}", sum); //300
Console.ReadKey();
}
public static int Show(ref int num1, ref int num2)
{
num1 = 100;
num2 = 200;
return num1 + num2;
}
有不对的地方,欢迎批评指正~~~