在正在使用可选参数加载的应用程序中,我有几种方法,其中一些是枚举。目前,为了做到这一点,我正在编写具有类似签名类型的方法:
public void SomeMethod(string myFirstParam = "", string mySecondParam = "", MyEnum myThirdParam = (MyEnum )(-1)){
if (myThirdParam != (MyEnum ) (-1))
{
//do something with it
}
}
所以我的第一个问题是,我尚未意识到这种方法是否存在一些陷阱,但是随着时间的流逝,它会痛苦地意识到这一点,其次,是否有更合适的解决方案,或者至少是一种优雅的解决方案?
我应该说,我们控制此方法的输入,该输入在内部使用,因此我不担心有人投值-1来使工作更加顺利。
确保您enum
具有默认值(等于零),这意味着“无”或“无效”。对于您的可选参数的默认值,这将是一个适当的值。
Microsoft Code Analysis也建议这样做,CA1008:枚举值应为零。
例如:
enum SpeakerType
{
None = 0,
Woofer,
Midrange
Tweeter
}
这样,default
关键字可提供合理的值,但不会无意间引用您不希望使用的值。
例如,BCL使用相同的概念。枚举SerialPort
定义用于a的停止位的数量StopBits
:
public enum StopBits
{
None,
One,
Two,
OnePointFive,
}
但是,该None
值无效。实际上,
将属性设置
SerialPort
为时,类将引发ArgumentOutOfRangeException
异常。StopBits
None
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句