2011-01-30 15 views
0

C#およびプログラミング全般に新しく、エラーが発生していますタイトルボックス)私はこのコードを実行すると:Help with Error C#:静的でないフィールド、メソッド、またはプロパティにオブジェクト参照が必要です。RpgTutorial.Character.Swordsmanship

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

あなたが方法が求められる同じオブジェクトのSwordsmanshipプロパティにアクセスしようとしている場合は、this参照経由でアクセスすることができます。

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

HeroですCharacterのサブクラス(または他の方法で)?もしそうなら、あなたはこのようにプロパティSwordsmanshipを参照することができます。

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

をあなた自身が「英雄」を参照する必要が見つけているそれ以外の場合、あなたはこのようなあなたのHeroSkillsクラスにコンストラクタ(およびプロパティ)を追加することができます。

thisキーワードが必要ですが、あなたがアクセスしているプロパティは、あなたのクラスのメンバーであることを意味していないことを
public HeroSkills : Character 
{ 
    public Hero CurrentHero 
    { 
     get; 
     set; 
    } 

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

注意。これは後で読みやすくするのに役立ちます。その後、ようにSkill()のようなあなたの様々な方法であなたのクラスの周りCurrentHeroを参照することができます。

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

あなたは、このようなコードの別の場所であなたの新しく変更されたクラスを使用します。

Hero player1 = //some hero variable 
var skills = new HeroSkills(player1); 
int currentSkill = skills.Skill(); 
関連する問題