2012-07-06 4 views
4

Possible en double:
Is there a simpler way to do this if statement in C#Comment améliorer ce code en utilisant C#

J'ai ce code:

while ((txtSource.Text[startPos].ToString() == " ") || 
     (txtSource.Text[startPos].ToString() == ",") || 
     (txtSource.Text[startPos].ToString() == "."))) 
     { 
      // do something 
     } 

est-il possible de faire ce qui précède comme pour instance:

while (!txtSource.Text[startPos].ToString() in (" ",",",".")) 
+0

Pourquoi voudriez-vous faire cela? Définir * améliorer *. – Mizipzor

+3

Au lieu de '.ToString()', faites simplement 'txtSource.Text [startPos] == ','' (avec guillemets simples). Pensez également à utiliser une instruction switch. – Matthew

+0

ok, disons que pour raccourcir le code, pour le rendre plus clair :) – Somebody

Répondre

7
while ((new char[] {' ', ',', '.'}).Contains(txtSource.Text[startPos])) 
5

LINQ Any() aide:

string text = "some text"; 
char[] controlChars = { ' ', ',', '.' }; 
int index = 1; 
bool passed = controlChars.Any(c => c == text[index]); 
+0

+1 pour l'utilisation de Linq! –

+0

Bien que j'interroge les raisons pour lesquelles l'auteur veut un «meilleur» moyen d'améliorer son code, il s'agit d'une solution élégante et qui apporte une certaine clarté au code. –

+0

Je dois entrer dans ce:] – Somebody

4
string[] SearchList = {" ",",","."}; 

while (SearchList.Contains(txtSource.Text[startPos].ToString())) 
{ 
    // Do Something 
} 
+0

Nice David! merci :) – Somebody

+0

J'aime mieux le format @ SteveDog, cependant. Il a fait la même chose dans une ligne de code, et (plus correctement que ma réponse) a utilisé des caractères, qui l'ont aussi raccourci et éliminé le besoin de .ToString(). – David

4
private static bool IsStopChar(char c) 
{ 
    switch (c) 
    { 
    case ' ': 
    case ',': 
    case '.': 
     return false; 
    default: 
     return true; 
    } 
} 

//... 

    while (!IsStopChar(txtSource.Text[startPos])) 
    { 
    //... 
    } 

Avec cette solution, vous éviter la collecte itération, l'allocation de mémoire, l'initialisation, ... cas reste facile Modification.

+1

-1 besoin moar LINQ! Je plaisante, j'ai upvoted ... c'est très simple et lisible. Shorter n'est pas toujours mieux. – jrummell

Questions connexes