Сравнение циклов c # - PullRequest
       5

Сравнение циклов c #

2 голосов
/ 27 июля 2010

Я часто использую комбинированные списки.Я часто перебираю их, чтобы найти совпадение, основанное на SelectedValue, например ...

while(cmbCompany.SelectedValue.ToString()!=B1ID)
{ 
    cmbCompany.SelectedIndex++; 
}

a) я пропускаю какой-то гораздо более быстрый вариант!
b) если мое сравнение былопротив целого числа, есть ли какое-либо преимущество в объявлении строки и установке, равной integer.ToString (), или если я просто (в моем примере выше) использовал B1ID.ToString (), оптимизировал ли бы его компилятор для меня?
в) или сравнения строк настолько медленные, что мне было бы лучше разобрать (или привести) SelectedValue к целому числу?

Ответы [ 4 ]

8 голосов
/ 27 июля 2010

Наиболее сложной частью вашего алгоритма является то, что вы увеличиваете индекс при каждом сравнении.Это очень неэффективно, потому что вы фактически меняете выбор с каждым тестом, который также запускает события (если они у вас есть), и потенциально опасны, потому что реакция на событие изменения выбора каждый раз делает вашу логику излишне сложной.

ТамЕсть ряд других способов.Вот лучший (хотя и грубый) пример кода из MSDN:

int index = comboBox1.FindString(textBox2.Text);
comboBox1.SelectedIndex = index;

(обратите внимание, что этот фрагмент кода сначала ищет данные в коллекции, а затем устанавливает значение SelectedIndex.)

1 голос
/ 27 июля 2010

cmbCompany.SelectedValue = B1ID должен сделать трюк - не так ли?

0 голосов
/ 27 июля 2010

a / b) Вы пытались использовать FindString ?Метод в основном ищет что-то, что * начинается с (есть эквивалент для поиска точного).

Или вы можете искать "элементы" и делать FindByValue

  cmbCompany.Items.FindByValue

в) Встроенные методы будут работать быстрее, а также использовать нативные типы (иначе это более затратно для приведения и сравнения)

0 голосов
/ 27 июля 2010

а) Может быть, но я позволю другим ответить на эту часть.

b) Компилятор вряд ли выведет ToString из цикла.

в) Определенно медленнее обрабатывать каждое значение. Лучше сравнить строки.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...