C#也允许函数默认参数

本文探讨了C#中使用默认参数的功能,这一特性允许开发者在定义函数时为参数提供默认值,从而减少函数重载的需求。文章通过具体代码示例展示了C#默认参数的使用方式,并与C++进行了对比,指出C#在指定参数值灵活性上的优势。

作为一个从C++过来的开发者,对于C#不能使用默认参数感到很不爽,因为这样的话明明写一个函数就可以实现的功能非得分成多个重载(overload)函数去写。但今天看到一个代码,突然发现C#原来也可以用默认参数,用法跟C++非常类似。

        static void TestFun(int a = 10)
        {
            Console.Write(a.ToString());
        }

        static void Main(string[] args)
        {
            TestFun();
        }

太奇怪了,我明明记得不行的啊,要行的话我不早就这么用了?一开始我还以为是.net 4.0的新功能,但用VS2010编了一个.net Framework 2.0的程序测试,居然也没问题。于是让同事用VS2005试试看,发觉编译不过,原来不是.net的问题,而是编译器的问题,因为究竟调用什么函数,传什么参数,这其实都是在编译期决定的,考虑到自己最开始用C#的时候是用VS2008,到了VS2010之后就支持了(也可能是C#的新特性,OK,总之现在是可以的了)。

而且我发觉这个默认参数功能比C++的还强,例如:

        static void TestFun(int a, int b = 10, int c=20)
        {
            Console.Write(a + " " + b + " " + c);
        }

        static void Main(string[] args)
        {
            TestFun(3, c:30);
        }

这样的话相当于制订了c的值,而b的值使用默认,而在C++中,要指定c的值,恐怕也一定得指定b的值。

转载于:https://www.cnblogs.com/guogangj/archive/2012/09/07/2674882.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值