Справка по ошибке C #: ссылка на объект требуется для нестатического поля, метода или свойства RpgTutorial.Character.Swordsmanship - PullRequest
0 голосов
/ 30 января 2011

Я очень плохо знаком с C # и программированием в целом, и у меня возникает ошибка (описанная в поле заголовка), когда я запускаю этот код:

using System;
using System.Collections.Generic;
using System.Text;
using System.Windows.Forms;

namespace RpgTutorial
{
    public class HeroSkills : Character
    {
        public int Skill()    
        {
            if (Hero.Swordsmanship = 10)
            {

            }
        }
    }
}

Теперь я знаю, что мне нужно создать ссылку на фехтование, но как именно я это сделаю? Спасибо за любую помощь!

Ответы [ 2 ]

2 голосов
/ 30 января 2011

Если вы пытаетесь получить доступ к свойству Swordsmanship того же объекта, для которого будет вызван метод, то вы можете получить к нему доступ через ссылку this:

if (this.Swordsmanship == 10) 
{
  ...
}
0 голосов
/ 30 января 2011

Является ли Hero подклассом Character (или наоборот)?Если это так, вы можете ссылаться на свойство Swordsmanship следующим образом:

if (this.Swordsmanship == 10) 
{
   ...
}

В противном случае, если вам нужно сослаться на «героя», вы можете добавить конструктор (и свойство) к вашему HeroSkills class вроде этого:

public HeroSkills : Character
{
   public Hero CurrentHero 
   {
      get;
      set;
   }

   public HeroSkills(Hero hero)
   {
      this.CurrentHero = hero;
   }
   ...

Обратите внимание, что ключевое слово this не требуется, но означает, что свойство, к которому вы обращаетесь, является членом вашего класса.Это может помочь вам в удобочитаемости позже.Затем вы можете ссылаться на CurrentHero вокруг вашего класса в ваших различных методах, таких как Skill(), следующим образом:

if (this.CurrentHero.Swordsmanship == 10) 
{
   ...
}

Вы будете использовать свой новый измененный класс в другом месте в коде, как это:*

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...