C # - вызов методов изнутри класса - PullRequest
1 голос
/ 27 января 2009

Как вы вызываете методы клиентских кодов из класса, определенного в коде клиента?

Например, у меня есть класс чтения из памяти, который может считывать значения из памяти процесса по определенному адресу. У меня также есть классы для управления типом данных, которые читаются из памяти (я читаю об «игровом» объекте. В «коде клиента» я вычисляю «базовый адрес» этого объекта в памяти, затем инициализирую Мой «объектный класс» использует конструктор, который принимает «базовый адрес» в качестве параметра. Этот базовый класс должен затем иметь возможность рассказать мне об этом объекте с помощью методов, потому что объекты знают, как далеко от базового адреса находится определенное значение например "здоровье")

Я попытался использовать такой код, и он выдал ошибку. ObjectManager - это класс, который может читать значения из памяти.

class ObjectManager : Memory
{
    LocalCharacter LocalPlayer = new LocalCharacter(this);
    // other things omitted
}
// Error: Keyword 'this' is not available in the current context

и это от отчаяния:

class ObjectManager : Memory
{
    LocalCharacter LocalPlayer = new LocalCharacter(ObjectManager);
    // other things omitted
}
// Error: Keyword 'this' is not available in the current context

Но безрезультатно. Каков наилучший способ сделать это?

Ответы [ 2 ]

10 голосов
/ 27 января 2009

Как насчет ссылки 'this' в конструкторе: -

class ObjectManager : Memory
{
    ObjectManager()
    {
        LocalPlayer = new LocalCharacter(this);
    }

    LocalCharacter LocalPlayer;
    // other things omitted
}
0 голосов
/ 27 января 2009

потому что вы не в методе.

Вы должны объявить метод для доступа к этому. Ваша основная функция будет вызывать вызов.

Если вы хотите установить поле уровня класса, вам нужно будет сделать это в конструкторе. Вы по-прежнему объявляете переменную в своем определении класса (но не в методе)

class ObjectManager : Memory
{
   public void mymethod()
   {
      LocalCharacter LocalPlayer = new LocalCharacter(this);
   }
}
...