Compiler Warning (level 1) CS0184
The given expression is never of the provided ('type') type
The expression can never be true because the variable you are testing is neither declared as type nor derived from type.
The following sample generates CS0184:
// CS0184.cs
// compile with: /W:1
class MyClass
{
public static void Main()
{
int i = 0;
if (i is string) // CS0184
i++;
}
}
Error in the warning?
If you have something like this:
interface InterfaceA
{
// ...
}
interface InterfaceB : InterfaceA
{
// ...
}
class ClassA : InterfaceB
{
// ...
}
and you write a method like this:
InterfaceA method(InterfaceA param)
{
param is InterfaceB; //< CS0184
return new ClassA();
}
You'll get the warning CS0184 above!
interface InterfaceA
{
// ...
}
interface InterfaceB : InterfaceA
{
// ...
}
class ClassA : InterfaceB
{
// ...
}
and you write a method like this:
InterfaceA method(InterfaceA param)
{
param is InterfaceB; //< CS0184
return new ClassA();
}
You'll get the warning CS0184 above!
- 12/14/2011
- JMCF125
- 4/2/2012
- Thomas Lee