C#笔记 函数(通俗易懂)

某些特定的函数叫方法!这里要注意

函数的作用就是当使用很多重复出现的代码的时候,可能需要修改部门代码,导致错误,所以引用函数。

对不同的数据执行相同的操作-函数。

class Program
{
static void Speaking() //静态无返回值无参数的函数,static具有全局变量
{
Console.WriteLine("I can Speaking!");
}
static void Main(string[] args)
{
Speaking(); //调用函数
}
}

 



Main()函数是应用程序的入口函数点,当运行C#程序的时候就会调用它包含的入口点函数,这个函数执行完毕,程序就终止了,所以所有程序都必须有一个入口点。
返回值是有数据类型的,void关键字无返回值
结束函数执行是return,意思就是把返回值传送给调用函数的变量。

class Program
{
static int number() //带返回值的函数
{
return 1;//这里的1就是返回类型,可以和Int一样,也可以是隐式转换的类型
}
static void Main(string[] args)
{
int i = number();
Console.WriteLine(i);
}
}




比较例子1与例子2:
例子1:

class Program
{
static int value(int i)//定义一个带参数的函数
{
if (i >= 0)
{
i++;

}

if (i < 0)
{
i--;
}
return i;
}
static void Main(string[] args)
{
int i = 3;
i = value(5);
Console.WriteLine(i);//结果是6
}
}




例子2:

class Program
{
static int value(int i)//定义一个带参数的函数
{
if (i >= 0)
{
i++;
return 999;//注意这里,这里直接跳出了函数,所以不管下面的i是什么值,结果都是一个常量
}

if (i < 0)
{
i--;
}

return i;
}
static void Main(string[] args)
{
int i = 3;
i = value(5);
Console.WriteLine(i);//结果是999
}
}



例子3:打印出数组的最大数
class Program
{
static int Max(int[] arry) //带参数的函数
{
int max = 0;//初始化最大值为0
for (int i = 0; i < arry.Length; i++)
{
if (max <= arry[i])
{
max = arry[i];
}
}
return max;//这里必须写在for循环外面,不然会执行一次就跳出了for循环
}
static void Main(string[] args)
{
int[] arry = { 1, 5, 15, 65 };//定义一个一维数组
int maxvalue = Max(arry);//调用函数
Console.WriteLine(maxvalue);//打印出最大数
}
}




以下是函数(方法参数)params  ref  out


例子4:计算任何数字的和

class Program
{
static int Max(params int[] arry)//params参数 定义了允许给函数的参数 加int类型的任意个数的数字或者不加参数
{
int max = 0;//初始化最大值为0
foreach (int n in arry)
{
max = n + max;//计算增加的任意个数的数字之和
}
return max;
}
static void Main(string[] args)
{

int maxvalue = Max(1,5,15);//调用函数,如果不给函数加参数,和为0
Console.WriteLine(maxvalue);//打印出最大数为21
}
}





ref参数后的变量限制:
1.不能使常量 const int number=5;
2.不能是未初始化的 int number;

class Program
{
static void Change(ref string s)
{
s="i am changed!";
Console.WriteLine(s);

}
static void Main(string[] args)
{
string s="i am ok!";
Change(ref s);
Console.WriteLine(s);//如果不加ref,s是不会被改变的,因为void函数没有返回值

}
}




//为什么要用ref和out参数?
答:
1.对于void的函数是无返回值的,可以让它传递值
2.利用ref和out可以达到返回多个返回值的特点


案例1:

class Program
{
//输出一个任意数组的最大数和索引值
static int Max(ref int index,params int[] array)//这里是任意的数组所以我们用params参数
{
int max = 0;//给最大值赋值为0
for(int i=0;i<array.Length;i++)
{
if(max<=array[i])
{
max=array[i];//把大的数字赋值给max
index=i;//最大数的索引值
}


}
return max;//因为我们要2个返回值,但是我们有只有1个return,所以 引用了ref
}
static void Main(string[] args)
{
int max;
int index = 0;//主意ref必须要初始化,out可以使用未赋值的变量作为参数

max = Max(ref index, 1, 5, 7, 15);//调用函数
Console.WriteLine("最大的数是:{0}",max);
Console.WriteLine("最大数的索引号是{0}",index);
}
}














posted @ 2011-12-02 09:38  Anleb  阅读(2540)  评论(0编辑  收藏  举报