如何在C#中的另一个方法中访问对象?

时间:2020-09-24 02:56:44

标签: c# class object

我正在尝试访问玩家的分数并在用户回答正确的问题时更新它?但是,当我引用实例化的对象时,出现了超出范围的错误。

如果问题正确,我会尝试在TriviaItem中增加用户得分。

这是我的代表链接:https://repl.it/@tylermorales1/TriviaGame#Game.cs

// Game.cs
using static System.Console;
using System;

namespace Trivia
{
  class Game
    {
      public Game()
      {
        Setup();
        Play();
        GameOver();
      }

      public void Setup()
      {
        // get player name 
        Player user = new Player();
        user.score = 0;
      }

      public void Play()
      {
          // check answer
          playerInput = ReadLine();
          WriteLine(question.checkAnswer(playerInput));
        }
      }
      
      public void GameOver(){
        // Show total score
        WriteLine($"Your score is: ");
      }
    }
}

using static System.Console;

class TriviaItem
{
  public string Question;
  public string Answer;

  //overloaded constructor
  public TriviaItem(string question, string answer)
  {
    Question = question;
    Answer = answer;
  }

  // check answer
  public string checkAnswer(string userInput)
  {
    if(this.Answer.ToLower() == userInput.ToLower()) {
      user.score++;
      return "Correct!!!";
    } else {
      return $"\nIncorrect :(\n The correct answer is: '{this.Answer}'\n Your answer was: '{userInput}'";
    }
  }     
}
namespace Trivia
{
    class Player
    {
        public string name = "Anonymous Person";
        public int score = 0;
    }
}

1 个答案:

答案 0 :(得分:1)

class Game内创建一个private Player user变量,并在Setup()函数内实例化。

示例外观:

class Game{
    private Player user;

    public void Setup(){
        user = new Player();
    }
}

然后您就可以在整个Game类中访问user.score