函数可复用,程序可读性好,容易实现代码的修改
这些天看C#,感觉在C#中函数的使用比在VB中使用的更为广泛,相比于VB得到了很大的扩展。
首先,函数既可以无返回值,又可以有返回值
定义一个无返回值的函数
Static void Write()
{
Console.WriteLine("Text output from function");
}
再定义一个有返回值的函数
Static <returnType> <functionName>()
{
…….
Return<returnVaule>
}
ReturnVaule 的数据类型要和returnType的数据类型相同,或是可以进行隐式转换。
有无返回值的函数的不同在于无返回值函数 要用关键字Void,有返回值函数则在此处定义数据类型;有返回值函数执行到Return时,程序就会返回调用代码
带参数的函数
Static double Product(double param1,double param2)
{
Return param1*param2;
}
带参数函数要注意参数类型的匹配,并且在参数中也可以指定数组参数,例如
Static int SumVals(params int[] vals)
{
Int sum= 0;
Foreach (int val in vals)
{
Sum+=val;
}
Return sum;
}
C#函数也像VB中,分为引用参数和值参数,引用参数就像VB中的传地址,值参数就是VB中的传值。
使用引用参数需要用ref指定,值参数不需特殊说明。
C#中可以用out参数指定输出参数,在函数执行完毕后,该参数的值将返回给函数调用中使用的变量
也上是函数的基本用法,还有很多扩展的用法
结构函数,可以简化程序的代码(这是我目前知道的结构函数的作用)
例如:
定义一个结构函数
Struct CustomerName
{
Public string firstName, lastName;
}
要在控制台输出一个完整的名字,可以用下面这段代码
CustomerName myCustomer;
myCustomer.firstName="john";
myCustomer.lastName="Franklin";
Console.WriteLine("{0} {1}",myCustomer.firstName,myCustomer.lastName);
我们可以在结构函数中加入函数简化上述代码
Struct CustomerName
{
Public string firstName, lastName;
Public string Name()
{
Return firstName+"" +lastName;
}
}
函数的重载
前面介绍的函数参数要注意类型的匹配,当需要处理不同类型的变量时,就可以使用函数的重载。
这相当于提供同一函数的不同版本,供不同类型的变量使用
举个简单的例子
定义这样一个函数
Static int Multiply(int param1,int param2)
{
Int vaule= param1*param2;
Return vaule;
}
这个函数不能用于计算double类型的变量
我们可以在代码中添加如下函数
Static double multiply(double parma1,double param2)
{
double vaule=param1*param2;
Return vaule;
}
重载函数不需要显示的指定使用哪个函数,只需提供一组参数,就可以根据参数类型执行对应的函数
委托
委托是一种可以把引用存储为函数的类型。我的理解是委托可以将好几个函数集合在一起,使用的时候可以根据需要选择委托中的函数。
我们可以这样定义一段代码
delegate double ProcessDelegate(double param1, double param2);
static double Multiply(double param1, double param2)
{
return param1 * param2;
}
static double Divide(double param1, double param2)
{
return param1 * param2;
}
以上是定义的一个委托,下面是对这个委托的使用
static void Main(string[] args)
{
ProcessDelegate process; //定义委托变量
Console.WriteLine("Enter 2 Number seperated with comma:");
string input = Console.ReadLine();
int commaPos=input.IndexOf(',');
double param1 = Convert.ToDouble(input.Substring(0, commaPos));
double param2 = Convert.ToDouble(input.Substring(commaPos + 1, input.Length - commaPos - 1)); //获得用户输入,并将输入分别赋给两个变量
Console.WriteLine("Enter M to Multiply or D to Divide");
input = Console.ReadLine();
if (input == "M")
process = new ProcessDelegate(Multiply);
else
process = new ProcessDelegate(Divide);
Console.WriteLine("Result:{0}",process(param1,param2));
Console.ReadKey();
C#中函数使用的更为广泛,后面还要学函数的形式构造,以及如何把他如何应用于类