首先让我说我已经阅读了我的问题,特别是this question和this one also。然而,我的问题有点不同。我理解不同方法之间的差异,但无法使我的代码在我的生活中正确运行。
在我的部分代码中,我有以下比较。但比较总是失败,并且“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的字段的类,通过属性访问。
答案 0 :(得分:2)
我要加两分钱:
行SET SERVEROUTPUT ON
SET VERIFY OFF
ACCEPT total_order_no PROMPT 'Enter order number to calculate total'
DECLARE
total_order_no varchar2(6) := &total_order_no;
total number;
v_order_code customer_order.order_code%type;
BEGIN
/*I assumed you are looking for just one value
and total_order_no is the value to perform the
searching of that order number */
SELECT ORDER_CODE INTO v_order_code
FROM customer_order
WHERE order_code = total_order_no;
total := CALCULATE_BILL_FOR_ORDER(v_order_code);
EXCEPTION
WHEN OTHERS THEN
dbms_output.put_line('No such order' || total_order_no || ' - ' || sqlcode);
END;
/
似乎有误,因为在大多数示例中,属性名称为String type = timer.Typer
。另外Type
似乎也很可疑,因为您同时引用if(time.Type.Equals("leg") || timer.Type == "Leg")
和time
而不是相同的变量。
最后,由于文化信息和字符集差异等原因,在比较.Net中的字符串时,我总是 总是使用timer
。我不确定如果这可能是一个问题,但请参阅this以获取更多信息。
编辑:
另外,StringComparison.Ordinal
也是一种选择。
答案 1 :(得分:1)
调试并输入break语句以查看timer.Type等于什么,或者放入Console.WriteLine(timer.Type.ToString())...计时器是否已超出范围?
或者可能将测试更改为timer.Type.ToString()==&#34; Leg&#34;