使用常量变量检测到无法访问的代码
本文关键字:访问 代码 常量 变量 检测 | 更新日期: 2023-09-27 18:20:28
我有以下代码:
private const FlyCapture2Managed.PixelFormat f7PF = FlyCapture2Managed.PixelFormat.PixelFormatMono16;
public PGRCamera(ExamForm input, bool red, int flags, int drawWidth, int drawHeight) {
if (f7PF == FlyCapture2Managed.PixelFormat.PixelFormatMono8) {
bpp = 8; // unreachable warning
}
else if (f7PF == FlyCapture2Managed.PixelFormat.PixelFormatMono16){
bpp = 16;
}
else {
MessageBox.Show("Camera misconfigured"); // unreachable warning
}
}
我知道这段代码是不可访问的,但我不希望出现这个消息,因为这是一种编译时的配置,只需要更改常量即可测试不同的设置,并且每像素的比特数(bpp)会根据像素格式而变化。有没有一种好的方法可以让一个变量保持不变,从中派生另一个,但不会导致无法访问的代码警告?注意,我需要这两个值,在相机启动时,它需要配置为正确的像素格式,我的图像理解代码需要知道图像的位数。
那么,有没有一个好的解决方法,或者我只是接受这个警告?
最好的方法是禁用文件顶部的警告:
#pragma warning disable 0162
另一种选择是将const
转换为static readonly
。
private static readonly FlyCapture2Managed.PixelFormat f7PF =
FlyCapture2Managed.PixelFormat.PixelFormatMono16;
但是,如果性能对代码很重要,我建议将其保留为const
并禁用警告。尽管const
和static readonly
在功能上是等效的,但前者允许更好的编译时优化,否则可能会丢失这些优化。
为了参考,您可以通过:关闭它
#pragma warning disable 162
并重新启用:
#pragma warning restore 162
您可以将条件替换为Dictionary
查找以避免警告:
private static IDictionary<FlyCapture2Managed.PixelFormat,int> FormatToBpp =
new Dictionary<FlyCapture2Managed.PixelFormat,int> {
{FlyCapture2Managed.PixelFormat.PixelFormatMono8, 8}
, {FlyCapture2Managed.PixelFormat.PixelFormatMono16, 16}
};
...
int bpp;
if (!FormatToBpp.TryGetValue(f7PF, out bpp)) {
MessageBox.Show("Camera misconfigured");
}
这是可能的,只需添加
#pragma warning disable 0162
在你的领域之前。要恢复,请将其置于末尾
#pragma warning restore 0162
。更多信息请点击此处MSDN