0
votes

Éviter deux fois le codage, un dans l'état si de la condition et une mission - C #

Voici mon code d'exemple: xxx

i vérifie si _timing n'est pas égal à cible.split (':') [0] + ":" alors je vais le cultiver à _timing . J'exécute ce cible.split (':') [0] + ":" deux fois. J'ai besoin de l'éviter.

Un autre exemple est celui-ci: xxx

ici encore, j'exécute db.students.firstordfault (x => x.name == "joe") deux fois. Ces échantillons ne sont que quelques exemples. J'ai besoin d'éviter deux fois coder comme celles-ci.

Je peux le faire en raison de réponses reçues: xxx

mais je ne veux pas faire quelque chose comme Ceci, car écarté restera en mémoire. Je cherche un moyen de ne pas enregistrer ces données temporaires en mémoire.

Y a-t-il des conseils?

c#

1 commentaires

Cette variable est toujours là, même si vous ne lui donnez pas un nom. Le processeur a besoin de mettre en œuvre le test IF () d'expression. Donc, pas de point que ce soit dans la fâcheuse de «rester en mémoire». Ça ne va pas BTW.


3 Réponses :


4
votes

Vous pouvez contenir l'instruction réutilisable dans une variable et la réutilisation où vous avez besoin de plus en plus bas dans votre commande de flux:

var student = GetStudentByName("Joe");
if (student  != null)
{
  // do something here with student
}


2 commentaires

Y a-t-il d'utiliser un code ligne? Par exemple, si la condition latérale droite est vraie, attribuez la sortie au côté gauche.


Vous n'avez pas besoin de vous inquiéter de cela: en.wikipedia.org/wiki/program_optimization



0
votes

Supprimer le bloc si code> bloc.

var student = db.Students.FirstOrDefault(x => x.Name == "Joe");
if (student  != null)
{
  // 
}


1 commentaires

Supprimer le "If-Block" semble en effet la solution la plus élégante, compte tenu de l'OP veut que cela soit toujours. (commentant simplement cela avant que la règle-nazis vienne pour dire "SOLUTIONS DE CODE SEULEMENT DES SOLUTIONS NE ASSISTANT" ET DOWNVOTEZ Ceci.)



1
votes

Selon votre exigence vous dites que strong>:

Je peux le faire en raison de réponses reçues: EM> P>

var splitted= target.Split(':')[0] + ": ";
if (_Timing != splitted)
{
   _Timing = splitted;
   splitted = null;
   GC.Collect(); // It this stage the 'splitted' is not longer remain in the memory.
}


0 commentaires