2010-07-13 8 views
1

Possible en double:
Best Practice: Initialize class fields in constructor or at declaration?différence entre l'initialisation sur la déclaration et sur la construction d'objets

est-il une différence entre ces deux classes?

public class Test 
{ 
    public Guid objectId = Guid.NewGuid(); 
} 

public class Test2 
{ 
    public Guid objectId; 
    public Test2() 
    { 
     objectId = Guid.NewGuid(); 
    } 
} 

Je suis curieux de savoir s'il existe des différences de vitesse ou de performance entre eux. Une méthode est-elle préférée à l'autre? Personnellement, j'aime mieux le premier parce qu'il utilise moins de lignes mais à moins qu'elles soient pratiquement identiques en ce qui concerne l'exécution, ce qui est une mauvaise raison de choisir l'une plutôt que l'autre.

+0

William, votre question n'a rien à voir avec ASP.NET. La même question pourrait être posée à propos d'un programme de console. –

+0

Qui se soucie si un sens est plus performant? Jusqu'à ce que votre code soit assez lent pour avoir besoin de profilage (dans ce cas, vous connaîtrez la réponse vous-même), la bonne façon de le faire est de choisir celui qui est le plus lisible. Voir la question sur les meilleures pratiques pour cette discussion. – Brian

Répondre

0

Du point de vue de la performance, je ne pense pas que ce soit important. La chose la plus importante est d'être cohérent. De cette façon, vous et tout le monde lisant votre code sera en mesure de suivre facilement.

0

Je pense que dans le premier scénario, le membre serait initialisé dans tous les constructeurs si vous utilisiez des constructeurs surchargés. Le second scénario nécessite que vous initialisiez explicitement le membre dans tous les constructeurs ou appeliez spécialement le constructeur par défaut (ou un autre constructeur qui a également initialisé les membres) afin de s'initialiser.

Je pense que du point de vue de la performance, les deux sont à peu près les mêmes, mais je pense que c'est une question de simplicité par rapport à la flexibilité. Vous gagnez plus de simplicité dans le premier scénario mais vous perdez la possibilité de ne pas initialiser un membre dans une version du constructeur si vous en aviez besoin.

Mike