字符串比较问题
本文关键字:问题 比较 字符串 | 更新日期: 2023-09-27 18:03:33
让我先说一下,我已经研究了我的问题,特别是这个问题和这个问题。然而,我的问题有点不同。我理解不同方法之间的差异,但我不能让我的代码在我的生命中正确运行。
在我的部分代码中,我有下面的比较。但是比较总是失败,打印出来的是"Type is:leg"。
if (String.Compare(timer.Type,"leg",true) == 0)
{
timer.StopTime = DateTime.Now;
// TODO Log into database here
toRemove.Add(timer);
}
//Couple more conditions in here...
else
{
Console.WriteLine("Attempting to remove cycle timer of invalid type");
Console.WriteLine("Type is:" + timer.Type);
//TODO: Log error
}
我还尝试了其他方法,但似乎都不适合我。
if(timer.Type == "leg" || timer.Type == "Leg") //Fails
if(time.Type.Equals("leg") || timer.Type == "Leg") //Fails
String type = timer.Typer; //Worth a shot...
if(type == "leg" || type == "Leg") //No luck
编辑:需要更多的代码,所以这里是整个方法。
private void stopFinishedTimers(AGVData agv)
{
List<CycleTimer> toRemove = new List<CycleTimer>();
foreach (CycleTimer timer in AllRunningCycleTimers)
{
if (agv.CurrentRFIDNumber == timer.CycleStopRfid)
{
if (String.Compare(timer.Type,"leg",true) == 0)
{
timer.StopTime = DateTime.Now;
// TODO Log into database here
toRemove.Add(timer);
}
else if (timer.Type.Equals("route") || timer.Type.Equals("Route"))
{
timer.StopTime = DateTime.Now;
// TODO Log into database here
toRemove.Add(timer);
}
else
{
Console.WriteLine("Attempting to remove cycle timer of invalid type");
Console.WriteLine("Type is:" + timer.Type);
//TODO: Log error
}
}
}
其中CycleTimers是一个包含type字段的类,通过属性访问
我来谈谈我的看法:
行String type = timer.Typer
似乎是错误的,因为在大多数示例中属性名称是Type
。此外,if(time.Type.Equals("leg") || timer.Type == "Leg")
似乎很可疑,因为您两次引用time
和timer
而不是相同的变量。
StringComparison.Ordinal
。我不确定这是否可能是一个问题,但请参阅此以获取更多信息。
编辑:另外,StringComparison.OrdinalIgnoreCase
也是一个选项。
调试并放一个break语句看看是什么定时器。Type等于,或者放一个Console.WriteLine(timer.Type.ToString())…计时器是否超出了范围?
或者将测试更改为timer.Type.ToString() == "Leg"