Domanda Risolto parola chiave as in C#

  • Autore discussione Utente cancellato 275412
  • Data d'inizio
Stato
Discussione chiusa ad ulteriori risposte.
U

Utente cancellato 275412

@nullptr la nuova discussione:
ciao non sto capendo l'operatore as in C#, serve per type casting? perché non ne trovo l'utilità dato che posso usare System.Convert, quali sono i vantaggi con as?
 
Reputo che tu debba fare una severa e rigorosa pulizia sulle definizioni di type casting e type conversion.

Facendo il type casting dici al compiler: "so che pensi che l'oggetto sia un tipo X ma sono sicuro che l'oggetto in realtà sia un tipo Y, quindi lascia che io lo tratti come se fosse un tipo Y".
Diversamente, facendo type conversion dici al compiler: "se mi dai un oggetto di tipo X posso creare un nuovo oggetto di tipo Y che costituisce ciò che è dentro quell'oggetto X", senza cambiare l'oggetto originale X e senza trattare l'oggetto X come un oggetto Y.

C#:
string foo = "123";
int bar = Convert.ToInt32(foo);
in questo caso stai definendo come creare un nuovo oggetto in quanto il compiler non ha alcuna idea di come si possa rappresentare un tipo string in un int.

Riguardo all'operatore as è paragonabile ad un'operazione di casting. La differenza è che nel caso che fallisca, invece di lanciare una eccezione di tipo InvalidCastException, restituisce null:
C#:
object foo = new object();
string bar = foo as string;
if (baz == null) {
    // `as` fallisce se l'oggetto non è una stringa o è null
}
 
Stato
Discussione chiusa ad ulteriori risposte.