Compiler Error CS0172
TOC
Collapse the table of content
Expand the table of content
Important This document may not represent best practices for current development, links to downloads and other resources may no longer be valid. Current recommended version can be found here. ArchiveDisclaimer

Compiler Error CS0172

Type of conditional expression cannot be determined because 'type1' and 'type2' implicitly convert to one another

In a conditional statement, you must be able to convert the types on either side of the : operator. Also, there cannot be mutual conversion routines; you only need one conversion. For more information, see Conversion Operators (C# Programming Guide).

The following sample generates CS0172:

// CS0172.cs
public class Square
{
   public class Circle
   {
      public static implicit operator Circle(Square aa)
      {
         return null;
      }

      public static implicit operator Square(Circle aa)
      // using explicit resolves this error
      // public static explicit operator Square(Circle aa)
      {
         return null;
      }
   }

   public static void Main()
   {
      Circle aa = new Circle();
      Square ii = new Square();
      object o = (1 == 1) ? aa : ii;   // CS0172
      // the following cast would resolve this error
      // (1 == 1) ? aa : (Circle)ii;
   }
}
Show:
© 2016 Microsoft