函数
1.1函数定义
关键字static\void
函数后面要跟圆换号()
代码执行块放花括号中
这里和C/C++都差不多。
1.2函数返回值
return 返回值
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace csFunction
{
class Program
{
static void Main(string[] args)
{
int[] nums = { 0,1,2,3,4,5,6,7,8,9};
int [] res = GetMaxMin(nums);
Console.WriteLine("max{0},min{1}",res[0],res[1]);
Console.ReadLine();
}
public static int[] GetMaxMin(int[] nums)
{
int[] res = new int[2];
res[0] = nums[0];//max initial
res[1] = nums[0];//min initial
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];
}
}
return res;
}
}
}
这里返回的都是一种类型,
假如不同类型呢?
返回数组,C语言是不是不可以?
C#是可以用out参数的,
也就是说它的可以返回多种不同类型值
参考例子
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace csFunction
{
class Program
{
static void Main(string[] args)
{
int[] nums = { 0,1,2,3,4,5,6,7,8,9};
int [] res = GetMaxMin(nums);
int max, min;
char str;
OutTest(nums, out max, out min, out str);
Console.WriteLine("max{0},min{1},max{2},min{3},str:{4}", res[0], res[1],max,min,str);
Console.WriteLine("max{0},min{1}",res[0],res[1]);
Console.ReadLine();
}
public static int[] GetMaxMin(int[] nums)
{
int[] res = new int[2];
res[0] = nums[0];//max initial
res[1] = nums[0];//min initial
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];
}
}
return res;
}
public static void OutTest(int[] nums,out int max,out int min,out char str)
{
int[] res = new int[2];
res[0] = nums[0];//max initial
res[1] = nums[0];//min initial
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];
}
}
max = res[0];
min = res[1];
str = 'C';
}
}
}
ref 在方法里面和方法外面都改变
在方法外是必须赋值的。
这种也类型一种return
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace csFunction
{
class Program
{
static void Main(string[] args)
{
int max = 2, min;
OutTestAdd2(ref max);
Console.WriteLine("add2:{0}",max);
Console.ReadLine();
}
public static void OutTestAdd2(ref int add2)
{
add2 = add2 + 2;
}
}
}
params
c#params应用
params 是C#开发语言中关键字, params主要的用处是在给函数传参数的时候用,就是当函数的参数不固定的时候。 在方法声明中的 params 关键字之后不允许任何其他参数,并且在方法声明中只允许一个 params 关键字。 关于参数数组,需掌握以下几点。
(1)若形参表中含一个参数数组,则该参数数组必须位于形参列表的最后;
(2)参数数组必须是一维数组;
(3)不允许将params修饰符与ref和out修饰符组合起来使用;
(4)与参数数组对应的实参可以是同一类型的数组名,也可以是任意多个与该数组的元素属于同一类型的变量;
(5)若实参是数组则按引用传递,若实参是变量或表达式则按值传递。
(6)用法:可变的方法参数,也称数组型参数,适合于方法的参数个数不知的情况,用于传递大量的数组集合参数;当使用数组参数时,可通过使用params关键字在形参表中指定多种方法参数,并在方法的参数表中指定一个数组,
此处参考[https://www.cnblogs.com/yiyi20120822/archive/2012/11/29/2794009.html]
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace csFunction
{
class Program
{
static void Main(string[] args)
{
int[] nums = { 0, 1, 2 };
int[] res = GetMaxMin(0,1,2);
Console.WriteLine("max{0},min{1}", res[0], res[1]);
Console.ReadLine();
}
public static int[] GetMaxMin(params int[] nums)
{
int[] res = new int[2];
res[0] = nums[0];//max initial
res[1] = nums[0];//min initial
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];
}
}
return res;
}
}
}
函数重载:
这个在C里无,C++亦有相似功能
就相当于一个函数名,但参数类型不一样。