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

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

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

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

这是没有问题的。

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

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

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

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

 

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

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

posted @ 2022-02-14 16:16  新空间-刘亚东  阅读(141)  评论(0)    收藏  举报