c#【OUT/REF】
OUT
OUT:方法内赋初值,只传出,用于返回多个值
out这个单词是“出去”的意思,所以参数加out就是将方法里面赋的那个值传到外面去了,方法外面赋不赋值都不起作用,所以说out只能将在方法里面赋的初值传出去,但不能将外面赋的值传入。
方法中的参数需要用out修饰,调此方法的时候也要用out修饰,ref也是一样
int num1;
int num2 = 70;
int numsum = show(out num1,num2);
Console.WriteLine(num1 );
Console.WriteLine(num2);
//out修饰方法的参数了,那么在方法外面可以不给这个参数赋值,
//但是方法里面必须给这个out修饰符的参数赋初值
//另外,参数加out,是把这个方法中的参数的值传到方法外面去了
}
public static int show(out int number1,int number2)
{
number1 = 40;
return number1 + 10;
}
//num1=40
//num2=70
REF
方法外赋初值,传入传出
out只能把值给传出去,但是ref可以传入也可以传出。传入方法中的参数在外面被赋值。
int number1 = 30;
int number2 = 50;
int sum = show(ref number1, ref number2);
Console.WriteLine("{0},{1},{2}", number1, number2, sum);
Console.ReadKey();
//ref用的时候必须要给这个变量赋初值,和out有区别,out可以把方法里的值传出去
//ref可以把值传到方法里,又可以把值传到方法外
public static int show(ref int num1, ref int num2)
{
num1 = 100;
num2 = 200;
return num1 + num2;
}
静态方法与非静态方法
静态方法与非静态方法的区别:
1.static方法是类中的一个成员方法,属于整个类,即不用创建任何对象也可以直接调用。static方法内部只能出现static变量和其他static方法,而且static方法还不能使用this等关键字(this指的是当前的对象),因为它是属于整个类。
2.静态方法效率上要比实例化高,静态方法的缺点是不自动进行销毁,而实例化的则可以做销毁。
3.静态方法和静态变量创建后始终使用同一块内存,而使用实例的方式会创建多个内存。