哪种说法更有效?

时间:2012-03-27 15:51:43

标签: c# compare

bankOptionEntity.AutoCompleteForForm = 
    (string.Compare(dr["Value"].ToString().Trim(), "Y", true) == 0);

OR

bankOptionEntity.AutoCompleteForForm =
    dr["Value"].ToString().Trim().ToUpper().Equals("Y");

3 个答案:

答案 0 :(得分:0)

var firstChar = dr["Value"].ToString()[0];
var ok = firstChar == 'y' || firstChar = 'Y';

并进行一些性能测试 - 但我认为这根本不是问题。

PS:假设字符串不为空 - 如果这可能是一个问题,请将其作为

var value = dr["Value"].ToStrin();
var firstChar = String.IsNullOrEmpty(value) ? 'n' : value[0];
var ok = firstChar == 'y' || firstChar = 'Y';

答案 1 :(得分:0)

检查此post。在我看来,既然你不必考虑文化敏感的比较,Equals应该比Compare方法更有效。但是,请注意Trim和ToUpper方法都有性能成本。

的问候,

答案 2 :(得分:0)

如果您在长循环中执行此代码,则问题不是字符串比较,而是您访问数据读取器中列的方式。首先获取列号并在循环中使用它。

int valueOrdinal = dr.GetOrdinal("Value");
while (dr.Read()) {
    bool ok = dr.GetString(valueOrdinal).Trim().ToUpper() == "Y";
    ...
}

如果您有一个短循环或根本没有循环,那么无论如何都无关紧要。