out的使用方法
1.如果方法的参数用out修饰了。那么这个参数必须在方法里进行赋值。
2.out修饰方法的参数了,那么在方法外面,可以被给这个参数赋值,但在方法里面必须给这个out修饰符的参数赋值
3.另外,参数加out,是把这个方法中的参数的值传到方法外面了。
如以下实例
static void Main(string[] args)
{
int num1 ;
int num2 = 80;
int numSum = Show(out num1,num2);
Console.WriteLine(num1);
Console.WriteLine(num2 );
Console.ReadKey();
}
public static int Show(out int number1,int number2)
{
number1 =90;
return number1+ 10;
}
out传多个返回值的方法
static void Main(string[] args)
{
int[] nums = { 1, 2, 3, 4, 5, 6, 7, 8, 9 };
int max ;
int min;
int sum =ArraySum(nums,out max, out min);
}
public static int ArraySum(int []numbers,out int max,out int min)
{
max = int.MaxValue;
min = int.MinValue;
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];
}
return sum;
}
方法的out参数和ref参数
ref用的时候必须给要给这个变量赋值,和out有区别,out可以把方法里的值传出去,
ref可以把值传到方法里,有可以把值传到方法外
ref是有进有出,而out是只出不进。
out与ref区别:
同:
1、都能返回多个返回值。
2、若要使用 ref 和out参数,则方法定义和调用方法都必须显式使用 ref和out 关键字。在方法中对参数的设置和改变将会直接影响函数调用之处(参数的初始值)。
异:
1.ref指定的参数在函数调用时候必须初始化,不能为空的引用。而out指定的参数在函数调用时候可以不初始化;out指定的参数
2.在进入函数时会清空自己,必须在函数内部赋初值。而ref指定的参数不需要。
ref和out的功能
1、使用ref型参数时,传入的参数必须先被初始化,对out而言,必须在方法中对其完成初始化。
2、使用ref和out时,在方法的参数和执行方法时,都要加Ref或Out关键字,以满足匹配。
3、out适合用在需要retrun多个返回值的地方,而ref则用在需要被调用的方法修改调用者的引用的时候。
4、ref传进去的参数在函数内部可以直接使用,而out不可。
5、系统对ref的限制是更少一些的。
6、若要使用 ref 参数,必须将参数作为 ref 参数显式传递到方法,ref 参数的值被传递到 ref 参数。
7、当希望方法返回多个值时,声明 out 方法非常有用;使用 out 参数的方法仍然可以返回一个值。
扩展资料:
out:标识一个参数值会受影响的参数,但在传入方法时,该参数无需先初始化。
ref:标识一个参数值可能会受影响的参数。
int.Parse(string类型变量名)
该方式是将数字内容的字符串转为int类型,如果字符串内容为空或者null时,则抛出ArgumentNullException异常;如果字符串内容不是数字,则抛出FormatException异常;如果字符串内容所表示数字超出int类型可表示的范围,则抛出OverflowException异常。
使用该方法切忌的一点就是只能处理字符串内容,而且字符串内容只能在int类型可表示的范围之内。
int.TryParse(string s, out int result)
该方式也是将数字内容的字符串转为int类型,但是该方式比int.Parse优越的地方,就是它不会出现异常。如果转换成功返回 true,如果转换失败返回 false。很明显,最后一个参数为输出值,如果转换失败,输出值为 0;如果转换成功,则输出相应的值。
TryParse方法实例
static void Main(string[] args)
{
Console.WriteLine("请输入一个数字");
string strNumber = Console.ReadLine();
int num;
bool result = Program.MyTryParse(strNumber,out num);
bool result1 = int.TryParse(strNumber, out num);
}
public static bool MyTryParse(string s,out int result)
{
result = 0;
try
{
result = Convert.ToInt32(s);
return true;
}
catch
{
return false;
}