Ошибка двусмысленности?

Так что я скорее новичок, когда дело доходит до программирования, особенно на С#. У меня есть ошибка, с которой мне нужна помощь?

Итак, я пытаюсь создать ролевую систему, которую я начал раньше всего с боевой системой, которую я едва начал, мой код, который хранится в Form1.cs, такой

    using System.Drawing;
    using System.Linq;
    using System.Text;
    using System.Windows.Forms;

namespace WindowsFormsApplication1
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }
        public class Variables{

       public Graphics character;
        private void Form1_Load(object sender, EventArgs e){
        }


        }

        private void Form1_KeyDown(object sender, KeyEventArgs e)
        {
            switch (e.KeyCode)
            {
                case Keys.Up:
                    Player.Top = Player.Top - 5;
                    Battle.Steps = Battle.Steps + 10;
                    break;
                case Keys.Down:
                    Player.Top = Player.Top + 5;
                    Battle.Steps = Battle.Steps + 10;
                    break;
                case Keys.Left:
                    Player.Left = Player.Left - 5;
                    Battle.Steps = Battle.Steps + 10;
                    break;
                case Keys.Right:
                    Player.Left = Player.Left + 5;
                    Battle.Steps = Battle.Steps + 10;
                    break;
            }
            if (Battle.Steps == 100)
            {
                Battle.Fight = true;
            }
        }
    }
}

и Battle.cs есть

    using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace WindowsFormsApplication1
{

   public class Battle
    {
      public static bool Fight {get; set;}
       public static int Steps; 
       public void Fight (){


    if (Fight == true)
    {

    }
       }
    }
}

Однако я получаю сообщение об ошибке Error Ambiguity between 'WindowsFormsApplication1.Battle.Fight' and 'WindowsFormsApplication1.Battle.Fight()', когда пытаюсь получить доступ к переменной в форме 1, а также когда я пытаюсь отредактировать в Battle.cs. Что происходит, как мне это исправить или есть ли лучший способ сделать это?


person user2350585    schedule 04.05.2013    source источник
comment
Покажи свой Battle класс.   -  person Ash Burlaczenko    schedule 04.05.2013
comment
Может быть, попробуйте изменить название вашего bool свойства Fight на Fighting   -  person David Tansey    schedule 04.05.2013
comment
Тег RPG на этом сайте относится к уважаемому языку программирования RPG, первоначально созданному IBM, который используется в основном для бизнес-приложений, используемых в основе бизнеса, с которым вы сталкиваетесь изо дня в день.   -  person WarrenT    schedule 05.05.2013
comment
У вас не может быть методов и полей с одинаковыми именами.   -  person Tiago Almeida    schedule 05.05.2013


Ответы (1)


Лучшее, что я могу понять, не видя вашего боевого класса, это то, что у вас есть переменная с именем Fight и метод Fight, например.

public class form
{
    {
        Battle battle = new Battle();
        battle.Fight = true;
        battle.Fight();

    }
}

public class Battle
{
    public bool Fight = false;
    public bool Fight()
    {
        return true;
    }
}

Это вызовет двусмысленность, как если бы вы вызвали бой, было бы трудно определить, вызываете ли вы переменную или метод. Чтобы исправить это, возможно, дайте вашей переменной или вашей функции другое имя. Например, если переменная Fight является просто логическим значением, чтобы увидеть, участвуют ли они в бою или должны вступить в бой, возможно, назовите переменную InFight или ShouldFight.

person Midpipps    schedule 04.05.2013
comment
извините за ошибку, я поднял свой боевой класс :/ - person user2350585; 05.05.2013
comment
То же самое по-прежнему применимо, у вас есть метод и свойство с одинаковыми именами, измените свойство public static bool Fight {get; set;} на что-то вроде Fighting или IsFight. - person Midpipps; 05.05.2013