C#方法中带默认参数时的坑,默认参数修改后不变

如下图是HelloWorld项目中的一个方法 GetB

这时候在另一个项目里面引用该HelloWorld这个DLL文件,如下图

现在运行项目 ConsoleApp1 结果如下图

这是没有问题的。

但是如果我修改了HelloWorld的这个GetB方法的默认值,如下图

然后再生产DLL文件放到ConsoleApp1下面,执行的结果如下:

发现默认值没有变更!!!其实出现这个问题的原因就是如果被引用的DLL的默认值变更了,那么去引用的项目也要重新编译才行。否则这个默认值就不会变化。

所以:如果我们的dll是公共的库文件,则最好不要使用默认参数,使用重载方法来实现不同参数的效果;因为使用默认参数的方法,如果只重新编译了这个公共dll(库文件),而没有重新编译引用这个公共库文件的程序,则会调用出错。

当然如果要灵活使用的话,可以根据业务场景使用0或者null这种特殊值来作为哨兵值:

这样变相的来变更默认值。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值