我有以下代码,它会发出警告
可能的意外参考比较; 要获得值比较,请将左侧投射到"string"类型
if (lblStatus.Content == "ACTIVE")
{
//Do stuff
}
else
{
//Do other Stuff
}
Run Code Online (Sandbox Code Playgroud)
我假设警告是因为lblStatus.Content可能不一定总是字符串类型?
我已尝试使用以下各项修复它,但我仍然收到警告
if (lblStatus.Content.ToString() == "ACTIVE")
if ((string)lblStatus.Content == "ACTIVE")
if (lblStatus.Content === "ACTIVE")
Run Code Online (Sandbox Code Playgroud)
请问有人可以解释一下我仍然会收到警告的原因以及解决此问题的最佳实用方法吗?
Jon*_*eet 59
警告是因为编译时类型lblStatus.Content是object.因此,运算符重载选择==(object, object)仅仅是参考标识比较的重载.这与值的执行时类型无关.
您的第一个或第二个选项应该已修复警告:
if (lblStatus.Content.ToString() == "ACTIVE")
if ((string)lblStatus.Content == "ACTIVE")
Run Code Online (Sandbox Code Playgroud)
请注意,如果lblStatus.Content为null ,则第一个将抛出异常.我更喜欢第二种形式.
如果您认为此时仍然看到警告,我怀疑您要么没有重建 - 或者您的构建中仍然存在"脏".完全重建绝对应该删除警告.
| 归档时间: |
|
| 查看次数: |
40697 次 |
| 最近记录: |