Possible unintended reference comparison

The warning is because the compile-time type of lblStatus.Content is object. Therefore operator overloading chooses the ==(object, object) overload which is just a reference identity comparison. This has nothing to do with what the execution-time type of the value is.

The first or second of your options should have fixed the warning though:

if (lblStatus.Content.ToString() == "ACTIVE")
if ((string)lblStatus.Content == "ACTIVE")

Note that the first of these will throw an exception if lblStatus.Content is null. I would prefer the second form.

If you think you’re still seeing a warning at that point, I suspect you either haven’t rebuilt – or something is still “dirty” in your build. A full rebuild absolutely should remove the warning.

Leave a Comment