2016-03-14 10 views
-3

Я получаю сообщение об ошибке с моим кодом .. Я новичок в C#, и я пытаюсь сделать игру с двумя игроками пошаговой. Делать это с помощью Visual StudioC# Переменная назначается, но никогда не используется

Ошибка «Предупреждение 2 переменной„гс“присваивается, но его значение не используется»

код ниже;

using System.Collections.Generic; 
using System.Linq; 
using System.Text; 
using System; 

namespace GridWorld 
{ 
public class newAI : BasePlayer 
{ 
    PlayerWorldState myWorldState; 

    private double maxSpeed = 5f; 
    //public int MaxNumTurn = 15; 
    private int Steps; 
    private object count; 


    public newAI() 
     : base() 
    { 
     this.Name = "AI FOR GAMES THE A TEAM"; 
     // this.MaxNumTurn = 15; 
     var gs = new GridSquare.ContentType(); // the variable gs is now a new GridSquare content type 

    } 


    void Pathfind() 
    { 

     PlayerWorldState startingPoint = BasePlayer(GridSquare.ContentType.Snail); 
     int myX = 0; 
     int myY = 0; 

     if (myX == -1 || myY == -1)  // if myX & myY are equal to minus 1 then increment the steps 
      Steps++; 
     { 
      return; 

     } 

     gs [myX, myY].Steps = 0;  // outside whileloop 

     while (true) 
     { 
      bool madeProgress = false; 

      foreach (startingPoint mainPoint in gs) 
      { 
       int x = mainPoint.X; 
       int y = mainPoint.Y; 

       if (SquareOpen(x, y)) 
       { 
        int passHere = GridSquare[x, y].Steps; 

        foreach (startingPoint movePoint in ValidMoves(x, y)) 
        { 
         int myX = movePoint.X; 
         int myY = movePoint.Y; 
         int newPass = passHere + 1; 

         if (GridSquare[myX, myY].Steps > newPass) 
         { 
          GridSquare[myX, myY].Steps = newPass; 
          madeProgress = true; 
         } 
+1

Во-первых, это не ошибка, а искажение. И это действительно ясно из вашего кода. вы объявляете и инициализируете значение переменной gs, которая еще не используется, что означает, что компилятор потеряет память без причины. –

+0

не волнуйтесь, его просто предупреждение не ошибка .. и объявить 'gs' глобально использовать его. –

+0

Вы ищете не то место. Эта строка должна дать ошибку: 'gs [myX, myY] .Steps = 0; '(gs не определен) –

ответ

0

На самом деле это не ошибка. Как говорится, это просто предупреждение о том, что переменная «gs» назначается где-то, но никогда не используется. Это не должно приводить к прекращению работы вашего приложения.

0

Вы объявляете и определяете gs в своем конструкторе newAI и пытаетесь использовать его в Pathfind. Pathfind не может его увидеть, потому что это local вашему конструктору класса, то есть локальной переменной с областью. Переместите его в свой класс, как переменные maxSpeed, Steps и count.

Это только предупреждение, но, по крайней мере, ваш код будет иметь неопределенное поведение.

+0

спасибо за вашу помощь .. Я сделал это сейчас, я получаю сообщение об ошибке с «var», в котором говорится: Ошибка Тип или имя пространства имен «var» не удалось найти (вам не хватает директивы using или ссылка на сборку?) – sg82013

+0

@ sg82013 Да, это будет, и это нормально. Я рекомендую сделать некоторые исследования на языке C#. Вот последний намек, который я вам дам, который помещает вас в правильное место для решения этой проблемы: [Неявно введенные локальные переменные] (https://msdn.microsoft.com/en-us/library/bb384061.aspx). Прочитайте раздел ** Примечания **, чтобы узнать, где 'var' может и не может использоваться, и снова просмотрите мой ответ. Кроме того, изучите, что такое _type_ и _namespace_ тоже, поскольку кажется, что вы не слишком знакомы с этими понятиями. –

Смежные вопросы