Numeri letterali C #
-
06-07-2019 - |
Domanda
Con questa dichiarazione del metodo (senza sovraccarichi):
void Method(double d)
{
// do something with d
}
Esiste una differenza (di prestazione) in fase di esecuzione tra
void Main()
{
Method(1);
Method(1.0);
}
o il compilatore converte automaticamente int letterale in un doppio?
Soluzione
L'ho appena provato. C # 3.0 genera il seguente IL per la prima chiamata:
ldc.r8 1.
call instance void ConsoleApplication1.Program::Method(float64)
Quindi, nessuna conversione di runtime.
Altri suggerimenti
Il compilatore convertirà implicitamente int in un doppio.
Non ci sarà penalità.
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow