Sono curioso di sapere se tutte le conversioni in conseguenza C# nel pugilato.
No. Solo conversioni Boxing Risultato nel pugilato, da qui il nome "conversioni di pugilato". Conversioni boxe sono tutti incorporato nelle conversioni dai tipi di valore ai tipi di riferimento - sia a una classe ereditata dal tipo di valore, sia a un'interfaccia che implementa (oppure a un'interfaccia compatibile con un'interfaccia implementata tramite una conversione di riferimento covariante o controvariante).
convergono tutti opera un'operazione costosa?
conversioni No. identità sono costo zero perché il compilatore possa elide interamente.
Quali sono i costi delle conversioni di riferimento implicite ed esplicite?
Le conversioni implicite di riferimento sono a costo zero. Il compilatore può eliderli interamente. Cioè, la conversione da Giraffe al suo tipo di base Animal o Giraffe al suo tipo di interfaccia implementato IAmATallMammal, è gratuita.
Le conversioni di riferimento esplicite comportano un controllo di runtime per verificare che il riferimento faccia effettivamente riferimento a un oggetto del tipo desiderato.
Se il controllo di runtime è "costoso" o meno dipende dal budget.
tale costo può essere adeguatamente misurato?
Sicuro. Decidi quale risorsa è pertinente per te - il tempo, diciamo - e poi misura attentamente il tuo consumo di tempo con un cronometro.
Una domanda non ha chiesto, ma probabilmente dovrebbe avere:
Quali sono le conversioni più costosi?
conversioni definite dall'utente non sono altro che uno zucchero sintattico per una chiamata di metodo; quel metodo può richiedere arbitrariamente a lungo, come qualsiasi metodo.
Le conversioni dinamiche riavviano il compilatore in fase di runtime; il compilatore può impiegare arbitrariamente a lungo per eseguire un'analisi di tipo, a seconda di quanto sia difficile il problema di analisi che si sceglie di lanciare.
Non ci sono boxe coinvolti quando si esegue il cast da un tipo di riferimento all'altro. – BrokenGlass
È misurabile in modo appropriato? dovrebbe essere evitato? –
Mentre la boxe non è coinvolta quando si esegue il casting di un tipo di riferimento su un altro, la conversione potrebbe essere. La conversione di un tipo di riferimento in un altro tipo di riferimento non correlato potrebbe essere costoso. –