练习题27、28、29:
1.out参数
如果你在一个方法中,返回多个相同类型的值的时候,可以考虑返回一个数组。
但是,如果返回多个不同类型的值的时候,返回数组就不行了,那么这个时候,
我们可以考虑使用out参数。
out参数就侧重于在一个方法中可以返回多个不同类型的值。
out参数问题1:第27题:写一个数组 求一个数组中的最大值、最小值、总和、平均值
using System;
namespace 练习题27
{
class Program
{
static void Main(string[] args)
{
//写一个方法,求一个数组中的最大值、最小值、总和、平均值
double[] numbers = { 1, 2, 3, -9, 6, -6, 8, 9 };
double[] res = GetMaxMinSumAvg(numbers);
Console.WriteLine("最大值是{0},最小值是{1},总和是{2},平均值是{3}", res[0], res[1], res[2], res[3]);
Console.ReadKey();
}
public static double[] GetMaxMinSumAvg(double[] nums)
{
double[] res = new double[4];
//res[0]是最小值,res[1]是最大值
res[0] = nums[0];//最大值
res[1] = nums[0];//最小值
for (int i = 0; i < nums.Length; i++)
{
if (nums[i] > res[0])
res[0] = nums[i];
if (nums[i] < res[1])
res[1] = nums[i];
res[2] += nums[i];
}
res[3] = res[2] / nums.Length;
return res;
}
}
}
out参数问题2:第28题:分别的提示用户输入用户名和密码
using System;
namespace 练习题28
{
class Program
{
static void Main(string[] args)
{
int[] numbers = { 1, 2, 3, 4, 5, 6, 7, 8, 9 };
int max1, min1, sum1, avg1;
bool b;
string s;
double d;
Work(numbers, out max1, out min1, out sum1, out avg1, out b, out s, out d);
Console.WriteLine(max1);
Console.WriteLine(min1);
Console.WriteLine(sum1);
Console.WriteLine(avg1);
Console.WriteLine(b);
Console.WriteLine(s);
Console.WriteLine(d);
Console.ReadKey();
}
public static void Work(int[] nums, out int max, out int min, out int sum, out int avg, out bool b, out string s, 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];
}
avg = sum / nums.Length;
b = true;
s = "123";
d = 3.13;
}
}
}
out问题3:第29题:写一个MyTryParse函数,实现和int.TryParse()一样的功能
(int.TryParse()是一种类容转换;表示将数字内容的字符串转为int类型。)
using System;
namespace 练习题29
{
class Program
{
static void Main(string[] args)
{
int num;
//bool b = int.TryParse("123", out num);
bool b = MyParse("123", out num);
Console.WriteLine(num);
Console.WriteLine(b);
Console.ReadKey();
}
public static bool MyParse(string s, out int result)
{
result = 0;
try
{
result = Convert.ToInt32(s);
return true;
}
catch
{
return false;
}
}
}
}