Bonsoir à tous,

Je me lance dans le C# et là je me retrouve face à un comportement un peu bizarre généré par le compilateur (je suis sous Visual Studio 2008). J'ai le code suivant (ce n'est évidemment qu'un extrait) :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
 
namespace projetSocket
{
 
    public partial class frmPrinc : Form
    {
        private struct socketMsgFromWindows
        {
            public char header;
            public socketMsgParamsWindows datas;
        }
 
        private const char BATCH_CONFIG = 'B';
        private const char FIELD_SEPARATOR = '?';
 
        .....
 
         private void button2_Click(object sender, EventArgs e)
        {
            MessageBox.Show(BATCH_CONFIG + FIELD_SEPARATOR);
        }
Tel quel, j'ai l'erreur suivante :
Error 2 Argument '1': cannot convert from 'int' to 'string' D:\Documents and Settings\Stephane\Mes documents\INSA\4IF\Socket\projetSocket\poste_distant\code\Windows\projetSocket\projetSocket\frmPrinc.cs 203 29 projetSocket

Si je corrige comme suit ça compile :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
private void button2_Click(object sender, EventArgs e)
        {
            MessageBox.Show(BATCH_CONFIG.ToString() + FIELD_SEPARATOR);
        }
Bon ... qu'il me force à mettre ToString .... pourquoi pas ...... mais ce qui me choque surtout c'est que BATCH_CONFIG et FIELD_SEPARATOR ont la même définition et que pour l'un je dois préciser le ToString mais pas pour l'autre ... Bref je suis dans une incompréhension totale ....

Moi je voudrais simplement afficher mon caractère B déclaré en const char ... (y a-t-il une autre solution que d'utiliser le ToString() ?)
Et puis pourquoi pour pour BATCH_CONFIG je dois préciser le ToString() mais pas pour l'autre ?


Merci de m'avoir lu et merci par avance pour votre aide


[EDIT] : je viens de faire un autre test. En mettant MessageBox.Show(FIELD_SEPARATOR) => fonctionne pas

Donc pourquoi dans MessageBox.Show(BATCH_CONFIG.ToString() + FIELD_SEPARATOR) fonctionne ?