书接上篇之回顾高级参数
一.out、ref、params
using System;
using System.Collections.Generic;
using System.Data.SqlTypes;
using System.Linq;
using System.Text;
namespace FirstDemo
{
class Program
{
static void Main(string[] args)
{
#region 高级参数
#region out
int[] num = { 8, 6, 3, 2, 1, 5, 4, 7, 9 };
int[] nums= Calculation(num);
Console.WriteLine("最大值:" + nums[0]);
Console.WriteLine("最小值:" + nums[1]);
int max = 0;
int min = 0;
string name = "";
Calculation(num, out max, out min, out name);
Console.WriteLine("{0}", name);
Console.WriteLine("最大值:" + max);
Console.WriteLine("最小值:" + min);
//如果返回类型为同一类型的多个参数时可以使用该类型数组进行返回
//如果返回类型为多种类型时可以使用高级参数 out 方法内部必须赋值
//方法内的参数为形参,调用方法时传的参数为实参
//重载:方法名相同,参数个数不同,参数类型不同
#endregion
#region ref
int numOne = 10;
int numTwo = 20;
ChangeValue(ref numOne, ref numTwo);
Console.WriteLine(numOne);
Console.WriteLine(numTwo);
//ref 将参数带到方法中进行改变参数值
//ref 要求在调用方法时参数必须赋值
#endregion
#region params
int[] sums = { 1, 1 };
Console.WriteLine("计算数组和{0}",GetSum(1,1));
Console.WriteLine("计算数组和{0}",GetSum(sums));
Console.WriteLine("计算数组的平均值{0}",GetAvg(sums.Length, GetSum(sums)));
//params 将实参列表中与可变参数元素类型一致的参数当做数组元素处理
//params 所传参数必须是数组且在参数列表中必须为最后一个
//委托 将方法以参数的形式传入到另一个方法的参数中
#endregion
#endregion
Console.ReadKey();
}
public static int [] Calculation(int[] nums) {
int[] num =new int[2];
num[0]=0;
num[1]=0;
for (int i = 0; i < nums.Length; i++)
{
if (nums[i] > num[0])
{
num[0] = nums[i];
}
if (nums[i] < num[1])
{
//num[1] = nums[i];
}
}
return num;
}
public static void Calculation(int[] nums,out int max,out int min,out string name) {
max = 0;
min = 0;
name = "张三";
for (int i = 0; i < nums.Length; i++)
{
if (nums[i]>max)
{
max =nums[i];
}
if (nums[i]<min)
{
min = nums[i];
}
}
}
public static void ChangeValue(ref int numOne,ref int numTwo) {
//int tem = 0;
//tem = numOne;
//numOne = numTwo;
//numTwo = tem;
numOne = numOne - numTwo;//-10
numTwo = numOne + numTwo;//10
numOne = numTwo - numOne;
}
public static int GetSum(params int[] sums) {
int sum=0;
for (int i = 0; i < sums.Length; i++)
{
sum += sums[i];
}
return sum;
}
public static int GetAvg(int length,int value) {
int svg = value / length;
return svg;
}
}
}
今天先到这里,改天继续。有地方理解不到位的,大佬请多多指导。只要思想不滑坡,方法总比困难多~~