C#循环比较

标签 c# combobox while-loop

我经常使用组合框。我经常遍历它们以找到基于 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/

相关文章:

C# 强制使用字典键

javascript - Kendo UI 组合框获得焦点

c++ - CComboBox.GetItemData 的倒数是多少?

java - input.nextLine() 在 while 循环内带有一个字符串

c# - 将 CheckBox 列添加到具有持久性的 GridView

c# - 使用 Oracle 命令参数的问题

c# - 如何从复杂的自适应卡中读取值?

C# WPF Mysql 组合框重复值

java - 为什么程序给出错误的输出?

c - 为什么输出是 36 而不是 24?