C# 哪种说法更有效?

C# 哪种说法更有效?,c#,compare,C#,Compare,或 试一试 进行一些性能测试,但我认为这根本不是问题 PS:假设字符串不是空的-如果这可能是一个问题,请将其设置为空 var firstChar = dr["Value"].ToString()[0]; var ok = firstChar == 'y' || firstChar = 'Y'; 看看这个。在我看来,由于你不必考虑文化敏感的比较,平等应该比比较方法更有效。但是,请注意Trim和ToUpper方法都有性能代价 关于,如果在长循环中执行此代码,问题不在于字符串比较,而在于数据读取器中

试一试

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

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

var firstChar = dr["Value"].ToString()[0];
var ok = firstChar == 'y' || firstChar = 'Y';
看看这个。在我看来,由于你不必考虑文化敏感的比较,平等应该比比较方法更有效。但是,请注意Trim和ToUpper方法都有性能代价


关于,

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

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

如果你有一个短循环或者根本没有循环,那也没关系。

测试结果是什么?为什么你不自己测试呢?你必须解释为什么你需要这段代码是最有效的。这两行应该运行大致相同的afaiksimple use
dr[“Value”].ToString().Trim().ToUpper()==“Y”
我来试一试。读取值该值可以是、否或“”。在查看现有应用程序中的几个地方时,我注意到两个不同的开发人员使用两种不同的风格编写代码。我不想因为问而被降级。如果我更有经验的话,我会亲自测试的。谢谢你的回复。
var firstChar = dr["Value"].ToString()[0];
var ok = firstChar == 'y' || firstChar = 'Y';
var value = dr["Value"].ToStrin();
var firstChar = String.IsNullOrEmpty(value) ? 'n' : value[0];
var ok = firstChar == 'y' || firstChar = 'Y';
int valueOrdinal = dr.GetOrdinal("Value");
while (dr.Read()) {
    bool ok = dr.GetString(valueOrdinal).Trim().ToUpper() == "Y";
    ...
}