Quindi ho sempre pensato che il casting e la conversione in C# siano fondamentalmente la stessa cosa: due modi diversi per passare da un tipo di dati all'altro. Chiaramente questo non è corretto, poiché spesso generano risultati diversi.Tempo corretto per eseguire il cast e convertire in C#
Convert.ToInt32(1.6) //outputs 2
(Int32)1.6 //outputs 1
(DateTime)("10/29/2013") //won't compile - cannot convert type 'string' to type 'system.date.time'
Convert.ToDateTime("10/29/2013") //outputs 10/29/2013 12:00:00 AM
- La mia domanda è che cosa è la differenza principale tra i due e perché tornano risultati diversi?
- Qual è il momento "appropriato" per utilizzare l'uno sull'altro?
Personalmente mi trovo ad usare il metodo Convert.To
come mi sembra più pulito. So che getta anche lo System.InvalidCastException
. Qualcuno può fornire una spiegazione semplice?
'Convert' fa un po 'di" magia "durante la conversione. Analizza il valore del tipo di origine e applica la trasformazione per creare una nuova istanza del tipo di destinazione. Il casting avviene a un livello inferiore e puoi solo trasmettere tipi correlati (ad esempio un numero in virgola mobile su un numero intero). – knittl
@Kelix I tuoi esempi rispondono alle tue domande. Generalmente, il cast deve essere usato quando si ha ereditarietà. Usa Converti per trasformare una cosa in un'altra cosa quando non puoi trasmettere. – Candide