我经常使用组合框。我经常遍历它们以找到基于 SelectedValue 的匹配项,例如...
while(cmbCompany.SelectedValue.ToString()!=B1ID)
{
cmbCompany.SelectedIndex++;
}
a) 我是不是错过了一些更快的选择!
b) 如果我的比较是针对一个整数,那么声明一个字符串并将其设置为等于 integer.ToString() 是否有任何好处,或者如果我只是(在我上面的示例中)使用 B1ID.ToString() 编译器是否会优化是给我的吗?
c) 还是字符串比较太慢以至于我最好将 SelectedValue 解析(或强制转换)为整数?
最佳答案
您的算法中最令人困惑的部分是您在每次比较时都会递增索引。这是非常低效的,因为您实际上会在每次测试时更改选择,这也会触发事件(如果您连接了事件)并且有潜在危险,因为每次对选择更改事件使用react都会使您的逻辑变得不必要的复杂。
还有许多其他方法。这是来自 MSDN 的更好(虽然粗糙)的代码示例:
int index = comboBox1.FindString(textBox2.Text);
comboBox1.SelectedIndex = index;
(请注意,此代码片段首先查找集合中的数据,然后设置 SelectedIndex 值。)
关于C#循环比较,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3345897/