Доступ к объектам класса из разных функций - PullRequest
0 голосов
/ 07 апреля 2019

Как я могу получить доступ к объекту класса из разных функций? Итак, у меня есть:

Player player1 = новый игрок ();
Player player2 = новый игрок ();

Внутри моей пустой основной функции.

Но когда я пытаюсь получить: player1.name из функции боя (новая созданная мной функция) player1 не распознается.

Как я могу разделить класс player1 между моими функциями?.

Я могу передать информацию player1 функции 'fight', используя параметры функции, но в случае, если у меня есть 50 параметров для передачи, это сложно.

Спасибо всем!

Я пытался вызвать класс player1 из разных функций, но это была ошибка.

static void Main(string[] args) {
        Player player1 = new Player();
}

public void fight(){
        Console.WriteLine(player1.name);

}

Ответы [ 2 ]

1 голос
/ 07 апреля 2019

Ваш вопрос является предметом рассмотрения.В зависимости от того, где вы объявляете свои переменные, они видны только в определенной области видимости.Есть много сайтов, которые объясняют эту концепцию, но вот один:

https://www.geeksforgeeks.org/scope-of-variables-in-c-sharp/

Отвечая на ваш вопрос, вы можете объявить свои переменные как «глобальные», а затем получить к ним доступ влюбая функция в вашем классе.

Вы можете сделать их глобальными, приняв ваше объявление, т.е. Player player1 = new Player ();и затем перемещая его за пределы вашего пустого метода main, чтобы он не находился внутри какого-либо метода, но все еще находился внутри вашего класса.После этого вы сможете получить доступ и изменить значения этой переменной в любой функции этого класса.

Вы также должны проверить модификаторы доступа, такие как private, public, protected и т. Д., Чтобы увидеть, как другие классы могут обращаться к этим переменным.

0 голосов
/ 07 апреля 2019

Вам необходимо передать объект Player в качестве параметра функции fight.Пример:

static void Main(string[] args)
{
    Player player1 = new Player();
}
public void fight(Player player)
{
    Console.WriteLine(player.name);
}
...