2010-06-01 5 views
2

Je veux sortir D: \ Apprentissage \ CS \ Resource \ Tutoriel \ C# LangTutorial Mais ne peut pas fonctionner. Erreur de compilation erreur CS0165: Utilisation de la variable locale non affectée 'StrPathHead S'il vous plaît donnez-moi quelques conseils sur la façon de corriger mon code ou une autre meilleure solution pour mon cas. Je vous remercie.Chemin Chaîne Concaténation Question en C#

static void Main(string[] args) 
{ 
    string path = "D:\\Learning\\CS\\Resource\\Book\\C#InDepth"; 
    int n = 0; 

    string[] words = path.Split('\\'); 
    foreach (string word in words) 
    { 

      string StrPathHead; 
      string StrPath; 
      Console.WriteLine(word); 

      if (word == "Resource") 
      { 
       StrPath = StrPathHead + word + "\\Tutorial\\C#LangTutorial"; 
      } 
      else 
      { 
       StrPathHead += words[n++] + "\\"; 
      } 

    } 
} 
+2

utilisation Path.Combine() .... –

+2

vous n'avez pas initialisées strPath; Vous avez également déclaré dans le périmètre de la boucle interne donc sera remplacé à chaque fois par la boucle, donc ne fonctionnera pas actuellement comme vous l'avez l'intention. –

Répondre

3

Je suis d'accord avec Mitch blé, mais vous pouvez résoudre votre problème actuel initializating StrPath

string StrPath = string.Empty;

Et comme d'autres personnes disent, déclare StrPath en dehors de la boucle.

De MSDN

Le compilateur C# ne permet pas l'utilisation de variables non initialisées. Si le compilateur détecte l'utilisation d'une variable qui n'a peut-être pas été initialisée, il génère CS0165.

Utilisez new pour créer une instance d'un objet ou affecter une valeur.

+0

Je dirais qu'il est nul; –

3

Initialiser StrPath à la chaîne vide ("") et déclare à l'extérieur de votre boucle. Vous pouvez également envisager d'utiliser un StringBuilder puisque String s dans C# sont immuables.

+0

Merci de m'avoir donné StringBuilder. –