Какое утверждение более эффективно? - PullRequest
0 голосов
/ 27 марта 2012
bankOptionEntity.AutoCompleteForForm = 
    (string.Compare(dr["Value"].ToString().Trim(), "Y", true) == 0);

ИЛИ

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

Ответы [ 3 ]

0 голосов
/ 27 марта 2012

Проверьте это сообщение .По моему мнению, так как вам не нужно учитывать сравнение с учетом культуры, метод Equals должен быть более эффективным, чем метод Compare.Однако обратите внимание, что методы Trim и ToUpper имеют снижение производительности.

regards,

0 голосов
/ 27 марта 2012

Если вы выполняете этот код в длинном цикле, проблема заключается не в сравнении строк, а в способе доступа к столбцу в вашем считывателе данных. Сначала получите номер столбца и используйте его в цикле.

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

Если у вас короткая петля или вообще нет петли, это все равно не имеет значения.

0 голосов
/ 27 марта 2012

попробуйте

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';
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...