Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 17
  1. #1

    [C#] impossibile convertire il dato

    Ciao a tutti.
    Sto facendo delle prove di applicazioni tipo console ma sto trovando dei piccoli problemi che, leggendo le info di VS e il mio manuale, non dovrebbero esserci...
    riporto il codice e poi spiego errore


    using System;
    namespace ConsoleApplication1
    {
    class Class1
    {
    [STAThread]
    static void Main(string[] args)
    {
    char pippo;
    int ind;
    Console.WriteLine ("Ciao mondo");
    ind = Console.Read();
    if (ind == -1)
    {
    Console.WriteLine ("ciao ciao");
    }
    else
    {
    pippo = (char) ind;
    //questa riga qui proprio non la digerisce, neanche usando string al posto di char o facendo il
    // il casting esplicito fra tipo e convertendo tutto inchar o string
    if (pippo = "r")
    {
    Console.WriteLine("Salutiamo ancora con Ciao mondo");
    }
    }

    }

    }
    }


    il problema è questo...
    nonmi fa la conversione di tipo nel punto segnato dai commenti....
    ho provato in tutti i modi ma mi da sempre l'errore
    "impossibile convertire..........."
    anceh con un casting explicit, non risolvo ilproblema...


    grazei dell'aiuto

  2. #2
    Utente di HTML.it L'avatar di Stoicenko
    Registrato dal
    Feb 2004
    Messaggi
    2,254
    ind è di tipo intero.. hai provato con il ToString() o il ToCharArray()?

    attento che nell'if ci vogliono 2 =

    ps: la readline della console dovrebbe ritornare un carattere o un astringa (non ricordo) e tu metti in un intero.. usa int.Parse(Console.ReadLine())

  3. #3
    provo....

    grazie

  4. #4
    allora..rileggendo la tua risposta...

    ho controllato con l'help online divisual studio e

    per fare un confronto (e non un assegnamento) devo usare un solo "=" (pippo = "r")

    il metodo Console.Read deve avere perforza un intero come primo valore restiruito, perchè altriemtni da errore, essendo il valore di ritorno pari a -1 se non trova nulla da leggere: se metto un valore stringa per raccogliere il dato letto, mi da errore alla compilazione.

    seguendo l'esempio di MSDN del VS, ciò che io ho scritto cioè

    pippo = (char) ind;
    if (pippo = "r")
    {
    Console.WriteLine("Salutiamo ancora con Ciao mondo");
    }

    è corretto......pewr effettivamente ...leggedolo meglio sembra che si una incongruenza....
    ariprovo e dico....

    mannaggia a MSDN e alla sua traduzione....eheheheheh

  5. #5
    Utente di HTML.it L'avatar di Stoicenko
    Registrato dal
    Feb 2004
    Messaggi
    2,254
    allora.. non so che help tu stia leggendo ma questa frase

    per fare un confronto (e non un assegnamento) devo usare un solo "=" (pippo = "r")
    è incredibilmente sbagliata.. anzi è totalmente l'opposto

    in più sempre la console.ReadLine non si usa così: Ma così

  6. #6
    Moderatore di Programmazione L'avatar di alka
    Registrato dal
    Oct 2001
    residenza
    Reggio Emilia
    Messaggi
    24,472

    Moderazione

    Originariamente inviato da EmanueleTo
    riporto il codice e poi spiego errore [...]
    Usa il tag [CODE ] (#) per formattare correttamente il codice sul forum.

    Ciao!
    MARCO BREVEGLIERI
    Software and Web Developer, Teacher and Consultant

    Home | Blog | Delphi Podcast | Twitch | Altro...

  7. #7
    Originariamente inviato da Stoicenko
    allora.. non so che help tu stia leggendo ma questa frase



    è incredibilmente sbagliata.. anzi è totalmente l'opposto

    in più sempre la console.ReadLine non si usa così: Ma così

    scusa, ma tu mi riporti un esempio preso da MSDN online (uguale a MSDN normale), ma riferito a ReadLine e non a Read e poi linguaggio VisualBasic Net e non C#....
    In VB per fare u assegnamento o un confronto (indifferente) si usava "="

    il mio MSDN, quello di Visual Studio riporta questo circa il metodo Read di C#


    Metodo Console.Read
    Legge il carattere successivo dal flusso di input standard.

    [Visual Basic]
    Public Shared Function Read() As Integer

    [C#]
    public static int Read();



    codice:
    (#)
    [C#] 
    int i;
    char c;
    while (true)
    {
     i = Console.Read ();
     if (i == -1) break;
     c = (char) i;
     Console.WriteLine ("Echo: {0}", c);
    }
    Console.WriteLine ("Done");
    return 0;
    non credo di aver sbagliato....alemno questo

  8. #8
    Utente di HTML.it L'avatar di Stoicenko
    Registrato dal
    Feb 2004
    Messaggi
    2,254
    ok per la read avevo inteso la readline..

    per l'= tu parlavi di c# mica di vb..

    in C# si usa l'uguale ( = ) per le assegnazioni e il doppio uguale ( == ) per i confronti..

    se nell'help del visual studio c'è scritto in modo differente allora cambia help o cambia oculista..

    ps: sul sito che ti ho linkato in alto puoi scegliere che linguaggi vuoi vedere..

  9. #9
    Se io metto la riga

    codice:
    if (pippo == "r")
    lui mi da come errore

    codice:
     Impossibile applicare l'operatore '==' a operandi di tipo 'char' e 'string'.

    e se lo metto con "="

    codice:
    Impossibile convertire implicitamente il tipo 'string' in 'char'.
    
    Impossibile convertire implicitamente il tipo 'char' in 'bool'.

  10. #10
    Utente di HTML.it L'avatar di Stoicenko
    Registrato dal
    Feb 2004
    Messaggi
    2,254
    perche il tuo "r" è una stringa.. per usare i char devi usare gli apici singoli.. 'r'

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.