title: The name 'IntroState' does not exist in the current context
body: <p>I get these three error messages in the switch block of Game1 class but I don't know how to fix them. What is wrong?
  The name 'IntroState' does not exist in the current context
  The name 'MenuState' does not exist in the current context<br>
  The name 'MaingameState' does not exist in the current context  </p>
  
  <p>In addition, I get this error message in the Intro class:
  The name 'IntroState' does not exist in the current context </p>
  
  <pre><code>public class Game1 : Microsoft.Xna.Framework.Game
  {
      GraphicsDeviceManager graphics;
      SpriteBatch spriteBatch;
      IState currentState;
  
      public enum GameStates
      {
          IntroState = 0,
          MenuState = 1,
          MaingameState = 2,
      }
  
  
      public void ChangeGameState(GameStates newState)
      {
          switch (newState)
          {
              case IntroState:
                  currentState = new Intro(this);
                  break;
              case MenuState:
                  currentState = new Menu(this);
                  break;
              case MaingameState:
                  currentState = new Maingame(this);
                  break;
          }
          currentState.Load(Content);
      }
  
  
      public GameStates CurrentState
      {
          get { return currentGameState; }
          set { currentGameState = value; }
      }
  
      private GameStates currentGameState = GameStates.IntroState;
  
  
      public Game1()
      {
          graphics = new GraphicsDeviceManager(this);
          Content.RootDirectory = "Content";
      }
  
      protected override void Initialize()
      {
          currentState = new Intro(this);
          base.Initialize();
      }
  
      protected override void LoadContent()
      {       
          spriteBatch = new SpriteBatch(GraphicsDevice);
          currentState.Load(Content);
      }
  
      protected override void Update(GameTime gameTime)
      {
          currentState.Update(gameTime);     
          KeyboardState kbState = Keyboard.GetState();
          base.Update(gameTime);
      }
  
      protected override void Draw(GameTime gameTime)
      {
          GraphicsDevice.Clear(Color.CornflowerBlue);
          spriteBatch.Begin();
          currentState.Render(spriteBatch);
          spriteBatch.End();
  
          base.Draw(gameTime);
      }
  }
  
  public interface IState
      {
          void Load(ContentManager content);
          void Update(GameTime gametime);
          void Render(SpriteBatch batch);
      }
  
  
  public class Intro : IState
  {
      Texture2D Introscreen;
      private Game1 game1;       
  
      public Intro(Game1 game)
      {
          game1 = game;
      }
  
      public void Load(ContentManager content)
      {
         Introscreen = content.Load&lt;Texture2D&gt;("intro");
      }
  
      public void Update(GameTime gametime)
      {
          KeyboardState kbState = Keyboard.GetState();
          if (kbState.IsKeyDown(Keys.Space))
            game1.ChangeGameState(IntroState);
      }
  
      public void Render(SpriteBatch batch)
      {
          batch.Draw(Introscreen, new Rectangle(0, 0, 1280, 720), Color.White);
      }
  }
  </code></pre>