为什么使用函数
1.提供一个套路,使某段代码对不同数据执行相同的操作;
2.函数可以使代码的可读性更高,写代码更简单
函数体
定义和使用函数
//定义函数
static<returnType><FunctionName>(<paramType><paramName>,...)
{
...
return <returnValue>
}
//使用函数
static void Main()
{
Write();
}
1.关键字static是与面向对象的概念有关
2.关键字void表明函数没有返回值
3.括号中的为参数,每个参数都有一个类型和名称,每个参数在函数代码中都用作一个变量
返回值
通过函数进行数据交换的最简单的方式是利用返回值。与变量一样,返回值也有数据类型。
string myString;
myString=getString();//getString为一个函数,返回值为字符串类型
当函数返回一个值时,可以用下面两种方式修改函数:
1.在函数声明中指定返回值的类型,但不是关键字void;
2.使用return关键字结束函数的执行,把返回值传送给调用代码
参数
static double product(double param1,double param2)
{
return param1*param2;
}
1.参数匹配,在调用函数时,必须使参数与函数定义中指定的参数完全匹配,包括类型、个数和顺序
2.使用参数数组,可以是个数不定的参数调用函数,用params关键字定义
3.通过引用传递参数,可以使函数处理的变量与函数调用中使用的变量相同,用ref关键字指定参数
static void showDouble(ref int val)
{
val*=2;
Console.WriteLine("val doubled={0}",val);
}
static void Main()
{
int myNumber=5;
Console.WriteLine("myNumber={0}",myNumber);
showDouble(ref myNumber);//myNumber被showDouble()修改了
Console.WriteLine("myNumber={0}",myNumber);
Console.ReadKey();
}
4.引用输出参数,也可以实现第三点的效果,使用out关键字
变量的作用域
C#中变量仅能从代码的本地作用域访问,所以我们才需要利用函数进行数据交换。
1.局部变量的作用域为某一个函数
2.全局变量的作用域可以覆盖几个函数
结构函数
结构函数的一个重要的功能就是结构可以包含函数和数据。
struct CustomerName
{
public string firstName;
public string lastName;
public strng GetName()
{
return firstName+""+lastName;
}
}
重载
我们在调用函数时,必须使用匹配函数参数类型的变量,那处理不同类型的变量时就需要多个函数,而函数重载就是创建多个同名的函数,这些函数可使用不同的参数类型。
static int MaxValue(int[] intArray)
{
...
return;
}
static double MaxValue(double[] doubleArray)
{
...
return;
}
委托
委托是一种存储函数引用的类型,定义指定了一个返回类型和一个参数列表,定义委托之后,就可以声明改委托类型的变量,可以把一个返回类型个参数列表和委托一样的函数赋值给这个变量。
委托的使用分两步:
- 定义
- 声明变量