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