看视频学编程之C#中的函数

------- 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一般用在函数有多个返回值的场所
 
 
原文地址:https://www.cnblogs.com/cctt/p/3141677.html