title: C# Variable Declared Outside Of While Loop Is Assigned in Loop But Get 'Unassigned' Compile Error
body: <p>I am working on an assignment for class and I can't get it to compile. I keep getting <code>"Use of unassigned local variable"</code> for both <code>multiplierString</code> and <code>MultiplcandString</code>. The are declared at the top of the main but it doesn't seem to be assigning a value to them inside the while loops. If i force a value outside the loop, the error goes away. Any help would be most appreciated. Thanks.</p>
  
  <p>What is going on here?</p>
  
  <pre><code>static void Main()
  {
  
      bool goodInput = false;
      ConsoleKeyInfo cki;
      string multiplicandString;
      string multiplierString;
      string endProduct;
      string prompt;
      string response;
      Int64 TryNumber;
  
      prompt = "This program will multiply two numbers of reasonable length.";
      Console.WriteLine(prompt);
      Console.WriteLine();
      prompt = "Press the Escape (Esc) key to quit or any other key to continue.";
      cki = Console.ReadKey();
  
      if (cki.Key != ConsoleKey.Escape)
      {
          while (!goodInput)
          {
              prompt = "Please provide the multiplicand: ";
              Console.WriteLine(prompt);
              response = Console.ReadLine();
  
              if (Int64.TryParse(response, out TryNumber))
              {
                  goodInput = true;
                  multiplicandString = "a"; //TryNumber.ToString();
              }
              else
              {
                  Console.WriteLine();
                  prompt = "Invalid multiplicand entry. It must be all numbers.\a";
                  Console.WriteLine(prompt);
                  prompt = "Please try again.";
                  Console.WriteLine(prompt);
              } // end if Int64.TryParse
          } // end while ! goodInput
  
          goodInput = false;
  
          while (!goodInput)
          {
              prompt = "Please provide the multiplier: ";
              Console.WriteLine(prompt);
              response = Console.ReadLine();
  
              if (Int64.TryParse(response, out TryNumber))
              {
                  goodInput = true;
                  multiplierString = "a"; //TryNumber.ToString();
              }
              else
              {
                  Console.WriteLine();
                  prompt = "Invalid multiplier entry. It must be all numbers.\a";
                  Console.WriteLine(prompt);
                  prompt = "Please try again.";
                  Console.WriteLine(prompt);
              } // end if Int64.TryParse
          } // end while ! goodInput
            //multiplierString = "a"; //TryNumber.ToString();
  
          endProduct = MultiplyByRectangle(multiplicandString, multiplierString);
  
          Console.WriteLine("The result of the calculation is:");
          Console.WriteLine("\t" + endProduct);
  
      } // end Main()
  </code></pre>