------- Windows Phone 7手机开发、.Net培训、期待与您交流! -------
函数
函数就是将一堆代码进行重用的一种机制。函数就是一段代码,这段代码可能有输入的值(参数),可能会返回值。
一个函数就像一个专门做这件事的人,我们调用它来做一些事情,它可能需要我们提供一些数据给它,它执行完成后
可能会有一些执行结果给我们。要求的数据就叫参数,返回的执行结果就是返回值。
Console.ReadLine();就是一个有返回结果的函数;Console.WriteLine("hello")就是一个有执行参数的函数,只有
告诉WriteLine被打印的数据它才知道如何打印;
int i= Convert.ToInt32("22")则是一个既有参数又有返回值的函数。
有了函数写代码就像拼零件,C#中的各种各样的技术其实就是通过for、if等这些基础的语法将不同的函数按照一定的逻辑组织起来。
自己写一个函数
读取输入的整数,定义成函数,多次调用:
static int ReadInt()
{
String s = Console.ReadLine();
return Convert.ToInt32(s);
}
设置断点测试,程序调用到函数的时候是先进入函数内部执行,执行完毕函数后再继续向下行代码执行。
函数如果没有返回值则标记返回值类型为void
return语句
导致函数立即结束。在返回值为void的函数中return方法直接结束不返回任何数值,在返回值非void的函数中return返回一个返回类型的数据
函数返回值易错点:一个函数如果“答应”返回一个非void类型的值,则函数的所有路径都要有返回值。
函数参数
确定函数参数的原则:自己能确定的数据自己内部解决,自己确定不了的数据通过参数传递。
函数名开头大写,参数名开头小写,参数名、变量名要有意义
函数重载(函数重名)
函数的重名:错误
static void SayHello(string name) static void SayHello(string name)
{ {
Console.WriteLine("我是{0}",name); Console.WriteLine("我是{0}",name);
} }
static void SayHello(string name) static int SyaHello(string name)
{ {
Console.WriteLine("I am{0}",name); return 10
} }
函数的重载:
static void SayHello(string name) static void SayHello(string name)
{ {
Console.WriteLine("我是{0}",name); Console.WriteLine("我是{0}",name);
} }
static void SayHello(int age) static int SyaHello(string name,string nicname)
{ {
Console.WriteLine("我的年龄是{0}",age); Console.WriteLien("我是{0},昵称是{1}",name,nicname);
} }
构成重载的条件:参数类型不同或者参数个数不同(函数的签名不同),与返回值无关。
可变参数
参数数组:int sum(params int[] values)
params关键字对sum函数产生的影响是:调用该函数时,可以传递任意数量的整数参数。
编译器每次都会统计int参数值的数量,然后创建相同大小的一个int数组,在数组中填充参数值,最后调用函数,并向它传递一个数组参数。
注意:
1、只能为一维数组使用params关键字;
2、不能只依赖params关键字来重载一个方法,params关键字不构成函数的签名的一部分;
3、不允许params数组指定ref或out修饰符;
4、params数组必须是函数的最后一个参数,所以一个函数只能有一个params数组;
5、非params函数总是优先于一个params函数。
class
{
public static void Hole(params object [] paramList)
……
} 可以接受任意数量的object参数值;参数类型也是任意的!(object是所有类的根)
函数的ref、out参数
ref必须先初始化,因为是引用,所以必须先“有”,才能引用,而out则是内部为外部赋值,所以不需要初始化,而且外部初始化也没用。
ref应用场景内部对外部的值进行改变,out则是内部为外部变量赋值,out一般用在函数有多个返回值的场所