out参数
在一个方法中,如果要返回多个相同类型的值的时候,我们可以考虑返回一个数组。但是,当我们要返回多个不同类型的值的时候,返回数组就不行了,这个时候,我们可以考虑使用out参数。
out参数就侧重于在一个方法中可以返回不同类型的
out参数在方法内部必须为其赋值
out语法:
class Program
{
static void Main(string[] args)
{
int[] nums = { 1, 2, 3, 4, 5 };
int max, min, sum;
bool b; string str;double d;
Test(nums, out max, out min, out sum, out b, out str, out d);
Console.WriteLine("最大值:{0},最小值:{1},和:{2}," +
"bool值:{3},string值:{4},double值:{5}"
,max,min,sum,b,str,d);
//输出结果:
//最大值:5,最小值:1,和:15,bool值:True,string值:字符串,double值:3.131415926
}
/// <summary>
/// 返回数组的最大值、最小值、和、及其他类型的值
/// </summary>
/// <param name="nums"></param>
/// <param name="max"></param>
/// <param name="min"></param>
/// <param name="sum"></param>
/// <param name="b"></param>
/// <param name="str"></param>
/// <param name="d"></param>
public static void Test(int[] nums,out int max,out int min,
out int sum,out bool b,out string str,out double d)
{
//out参数要求在方法的内部为必须为其赋值
max = nums[0];
min = nums[0];
sum = 0;
for (int i = 0; i < nums.Length; i++)
{
if (nums[i]>max)
{
max = nums[i];
}
if (nums[i] < min)
{
min = nums[i];
}
sum += nums[i];
}
b = true;
str = "字符串";
d = 3.131415926;
}
}
ref参数
将一个变量带入一个方法中进行改变,改变完成后,在将改变后的值带出方法
ref参数要求在方法外必须为其赋值,而方法内可以不赋值。
ref语法:
class Program
{
static void Main(string[] args)
{
int num1 = 10;
int num2 = 20;
Testref(ref num1, ref num2);
Console.WriteLine("num1的值:{0},num2的值:{1}",num1,num2);
//输出结果:num1的值:20,num2的值:20
}
/// <summary>
/// 交换两个int类型变量
/// </summary>
/// <param name="num1"></param>
/// <param name="num2"></param>
public static void Testref(ref int num1,ref int num2)
{
int temp = num1;
num1 = num2;
num2 = num1;
}
}
params可变参数
将实参列表中跟可变参数数组类型一致的元素都当做数组的元素去处理。
params可变参数用于方法参数个数不知的情况,如果使用数组参数是,可以使用params可变参数
class Program
{
static void Main(string[] args)
{
int sum = GetSum(1, 2, 3, 4, 5, 6, 7, 8, 9);
Console.WriteLine(sum);
//输出结果:45
}
public static int GetSum(params int[] nums)
{
int sum = 0;
for (int i = 0; i < nums.Length; i++)
{
sum += nums[i];
}
return sum;
}
}