C#之函数

函数可复用,程序可读性好,容易实现代码的修改

这些天看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#中函数使用的更为广泛,后面还要学函数的形式构造,以及如何把他如何应用于类

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值