Erreur du compilateur CS0173
Mise à jour : novembre 2007
Message d'erreur
Le type d'expression conditionnelle ne peut pas être déterminé, car il n'existe pas de conversion implicite entre 'classe1' et 'classe2'
Type of conditional expression cannot be determined because there is no implicit conversion between 'class1' and 'class2'
Les conversions entre les classes sont utiles lorsque vous souhaitez que des objets de classes différentes fonctionnent avec le même code. Cependant, deux classes qui fonctionnent ensemble ne peuvent pas avoir de conversions mutuelles et redondantes.
Pour résoudre l'erreur CS0173, vérifiez qu'il n'existe qu'une seule conversion implicite entre class1 et class2, quelles que soient la direction de la conversion et la classe qui contient la conversion. Pour plus d'informations, consultez Tableau des conversions numériques implicites (Référence C#) et Opérateurs de conversion (Guide de programmation C#).
Exemple
L'exemple suivant génère l'erreur CS0173 :
// CS0173.cs
public class C {}
public class A {}
public class MyClass
{
public static void F(bool b)
{
A a = new A();
C c = new C();
object o = b ? a : c; // CS0173
}
public static void Main()
{
F(true);
}
}
Le code suivant génère l'erreur CS0173 dans Microsoft Visual Studio 2008 mais pas dans Visual Studio 2005.
//cs0173_2.cs
class M
{
static int Main ()
{
int X = 1;
object o = (X == 0) ? null : null; //CS0173
return -1;
}
}