无法将类型转换为bool

时间:2011-02-06 05:53:45

标签: c#

    public static void PathFinder (Client C, Path Distance)
    {
    if (C.Recording)
    {

      if(Distance to C.Path[C.PathIndex] < 7); 
      {
      if(C.PathIndex + 1< C.Path.Count)
      {
         C.PathIndex++; 
      }
      else
      {
         C.Recording = true;
         C.Path = new List<Coord>();
         C.PathIndex = 0;
         C.Path.Add(new Point(C.X, C.Y));
         C.Path = C.Path.Reverse();
         C.PathIndex = 1;
      }
         Coord To = Calculations.PullWeights(MakeCoord(C.X, C.Y), C.Path[C.PathIndex]);
      } 
    }
}

我收到了几个错误,但我不确定如何解决问题。我已经看过解决方案,但仍然有点无能&gt;。&lt;

3 个答案:

答案 0 :(得分:2)

此行错误

if(Distance to C.Path[C.PathIndex] < 7);

首先Distance to C.Path[C.PathIndex]不是有效的表达式。您需要将其替换为计算距离的表达式。

其次,行尾的分号一定不能存在。你真的在说if (x) doNothing();

答案 1 :(得分:1)

我认为错误发生在这里:

if(Distance to C.Path[C.PathIndex] < 7); 

这看起来不像是一个有效的C#表达式,而这就是为您提供转换错误

答案 2 :(得分:0)

  1. if (C.Recording) - 如果Recording不是bool属性,那么这将不起作用
  2. if(Distance to C.Path[C.PathIndex] < 7);这不是合法的C#,并且会丢失尾随的分号
  3. 更新

    我不确定(!C.Recording)是否也能正常工作。我不知道录音的类型是什么。如果它是一个bool,那么一切都很好,但如果没有,那么你需要创建一个布尔表达式。

    例如,如果Recordingstring类型,那么您需要执行

    if (!string.IsNullOrEmpty(C.Recording)) { ... }