out传值用法
在Main里面和方法里面一起用out(请看下面比较),如果方法的参数用out 修饰了,那么这个参数 必须在方法里 进行赋值。
static void Main(string[] args)
{
int number1 = 10;
int sum = AddNumber(number1);
Console.WriteLine(number1);
Console.WriteLine(sum);
Console.ReadKey();
}
public static int AddNumber( int num1)
{
return num1 + 20;
//显示10,30
改变后
利用out传值后,按照方法里面的赋值,之前的赋值不管用了。 并且修饰方法的参数可以不再Main赋值,但是方法里面必须给这个out修饰符赋处值。
static void Main(string[] args)
{
int number1 = 10;//可以不用赋值。
int sum = AddNumber( out number1);
Console.WriteLine(number1);
Console.WriteLine(sum);
Console.ReadKey();
//如果方法的参数用out 修饰了,那么这个参数 必须在方法里 进行赋值。
}
public static int AddNumber( out int num1)
{
num1 = 100; //因为用out,所以必须赋值
return num1 + 20;
}
//显示100,120
举例:多个返回值方法:
static void Main(string[] args)
{
int[] nums = { 1, 2, 3, 4, 5, 6, 7, 8 };
int max;
int min;
int sum = ArraySum(nums, out max, out min); //必须每个都要用out,下面方法同理。
}
public static int ArraySum(int []numbers,out int max,out int min)
{
max = int.MinValue;
min = int.MaxValue;
int sum=0;
for (int i=0;i<numbers.Length ;i++)
{
if (numbers[i]>max)
{
max=numbers[i];
}
if (numbers[i]<min)
{
min=numbers [i];
}
sum+=numbers [i];
}
}
ref:只要有ref的出现必须在Main里面赋初值
static void Main(string[] args)
{
int number1=10; //因为有ref必须有初值。
int number2 =20;
int sum=show(ref number1,ref number2);
Console.WriteLine("{0},{1},{2}",number1,number2, sum);
Console.ReadKey();
//ref 和之前的没写没有关系,但是有了ref后一定要赋初值。
//out 可以将方法里的值传出去。
// ref可以把值传到方法里,又可以 传出去。
}
public static int show(ref int num1, ref int num2)
{
num1 = 100;
num2 = 200;
return num1 + num2;
}
//显示:100,200,300;
//如果将方法里面的赋值去掉的话,则显示10,20,30
举例:ref返回值判断:
static void Main(string[] args)
{
int number = 90;
int num = show(ref number);
Console.WriteLine(number);
Console.ReadKey();
}
public static int show(ref int num)
{
num = 10;
return num + 10;
}
//显示:10; 原因:之前赋值为90 被送进来,但是里面赋值后变成了10 ,然后又通过ref送了出去。
ref和out区别
out可以将方法里的值传出去,ref可以把值传到方法里面来,也可以传出去。
本文详细介绍了C#中out和ref关键字的使用方法及其区别。通过具体示例展示了如何利用这两个关键字实现方法间的数据传递,包括单个变量及多个返回值的情况。
7133





