2009-10-27 4 views
0

Avec cette déclaration de méthode (pas de surcharge):C# littéraux

void Method(double d) 
{ 
    // do something with d 
} 

Y at-il une (performance) différence lors de l'exécution entre

void Main() 
{ 
    Method(1); 
    Method(1.0); 
} 

ou le compilateur convertit automatiquement le int littéral à un double?

Répondre

2

Je viens de l'essayer. C# 3.0 génère l'IL suivante pour votre premier appel:

ldc.r8 1. 
call instance void ConsoleApplication1.Program::Method(float64) 

Donc, aucune conversion d'exécution.

7

Le compilateur convertira implicitement l'int en un double.

Il n'y aura pas de pénalité.

+0

Pour ajouter ceci: Vous pouvez toujours utiliser Reflector pour regarder l'IL qui en résulte ou à quoi il ressemble quand il est reconverti en C#. – Joey

Questions connexes