avril
2007
En C#, il existe un mot clé default. Ce mot clé renvoit le type par défaut du type qu’il prend en paramètre.
En C# 2.0, il existe un opérateur ?? qui est en quelque sorte une extension de ?.
Au lieu de partir du principe que si le premier paramètre de l’opérateur ?? est null, on renvoit le deuxième paramètre, on aurait pu l’étendre en partant du principe que la condition ne se fait plus sur null mais sur default(T). (Actuellement il n’est pas possible d’utiliser l’opérateur ?? sur un int par exemple).
Je sais, je suis méga fainéant. Et alors !
Ce qui est vraiment dommage c’est de ne pas pouvoir redéfinir l’opérateur ??
En effet, je ne peux pas faire ceci :
{
Test i = 0;
Console.WriteLine((i ?? -1).ToString());
Console.ReadLine();
}
struct Test
{
private int _value;
public Test(int value)
{
_value = value;
}
public static implicit operator int(Test t)
{
return _value;
}
public static Test operator ??(Test valueIf, Test valueElse)
{
return valueIf == default(int) ? valueElse : valueIf;
}
}
L’erreur « Overloadable binary operator expected » est généré à la compilation.