C# surchage operateur+

gilles81 Messages postés 67 Date d'inscription   Statut Membre Dernière intervention   -  
gilles81 Messages postés 67 Date d'inscription   Statut Membre Dernière intervention   -
Bonjour,
je voudais emplémenter un operateur + ayant en paramètre un HexNumber et un int. Mon programme ci-dessous ne se laisse pas compiler. Suis-je sur la bonne voie? Message d'erreur: The name 'result' does not exist in the current context. C'est "(int)result " du console.WritLine(.......)

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace Rayan1
{
class HexNumber
{
private float num;
public HexNumber(float num)
{
this.num = num;
}
public static HexNumber operator +(HexNumber h1,int h2)
{
return new HexNumber(h1.num+h2);
}
static void Main()
{
HexNumber h1 = new HexNumber(000F);
HexNumber resutlt = h1+17;
Console.WriteLine("{0}+17={1} (={2} dezimal)", h1, resutlt, (int)result);
Console.ReadLine();

}
}



}

merci

6 réponses

halo_quebec Messages postés 161 Date d'inscription   Statut Membre Dernière intervention   10
 
c'est resutlt ou result ????
0
gilles81 Messages postés 67 Date d'inscription   Statut Membre Dernière intervention   1
 
c'est result. Ca ne marche pourtant pas : Cannot convert type 'Rayan1.HexNumber' to 'int'
0
halo_quebec Messages postés 161 Date d'inscription   Statut Membre Dernière intervention   10
 
Si je comprend bien, tu fais une classe qui change les int en hexadecimal et ou tu peut ajouter des int a des hexadeimal...

L'erreur vient du cast d'un hexadecimal en int, il connait pas ton hexadecimal, il fauit que tu lui disent "lorsque je te cast en int, il faut que tu donne "leChiffre" / 16" si je croit que c avec un override de la methode CompareTo qu'il faut que tu le fasse.

Cependant, si tu veut retourner ton chiffre en Hexadecimal (genre 48f2a) tu devrai faire un ToString(), car tu ne peut pas mettre de lettre dans les int (mais sa tu devrai le savoir:P)

En experant que sa t'aide
0
gilles81 Messages postés 67 Date d'inscription   Statut Membre Dernière intervention   1
 
il ya plus d'erreur de compilation, mais rien ne s#affiche sur la console, je ne comprend pas pourquoi.

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace Rayan1
{
class HexNumber
{
private float num;
public HexNumber(float num)
{
this.num = num;
}
public static HexNumber operator +(HexNumber h1,int h2)
{
return new HexNumber(h1.num+h2);
}
public static HexNumber operator /(HexNumber a, HexNumber b)
{
return new HexNumber(a.num/b.num);
}
static void Main()
{
HexNumber h1 = new HexNumber(000F);
HexNumber result = h1+17;
Console.WriteLine("{0}+17={1} (={2} dezimal)", h1, result, (int)result);
Console.ReadLine();

}
public static explicit operator int(HexNumber value)
{
return (int)value.num;
}

}





}
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
halo_quebec Messages postés 161 Date d'inscription   Statut Membre Dernière intervention   10
 
ok, tout d'abord, c'est quoi que tu veux afficher la dedans?

Console.WriteLine("{0}+17={1} (={2} dezimal)", h1, resutlt, (int)result);

pour le (int)result, veut tu afficher ton nombre en hexandecimal ou sa valeur en int(sur la base 10)?
0
gilles81 Messages postés 67 Date d'inscription   Statut Membre Dernière intervention   1
 
je veux afficher les deux ie le nombre en hexandecimal et sa valeur en int
0