Может кто-нибудь объяснить приведенный ниже код, пожалуйста - PullRequest
0 голосов
/ 25 февраля 2011

`где client.name.ToLower (). Содержит (name.ToLower ())

Ответы [ 4 ]

3 голосов
/ 25 февраля 2011

Теперь все понятно.Это (плохо сделанный) регистронезависимый поиск для name в client.name.Истинно, если name содержится в client.name.Плохо сделано, потому что используются международные буквы (ясно, что «международных букв» не существует. Я имею в виду буквы из культуры, отличной от вашей. Классическим примером является турецкая культура. Читать это: http://www.i18nguy.com/unicode/turkish-i18n.html, часть под названием Turkish Has An Important Difference), вы можете сломать его.«Правильный» способ сделать это: client.name.IndexOf(name, StringComparison.CurrentCultureIgnoreCase) != -1.Вместо StringComparison.CurrentCultureIgnoreCase вы можете использовать StringComparison.InvariantCultureIgnoreCase.Если вам нужно использовать такие приемы, как ToLower, было предложено, чтобы ToUpper было лучше для обеих сторон сравнения (но НАМНОГО лучше использовать StringComparison.*)

1 голос
/ 25 февраля 2011

Это странный кусок кода.Было бы хорошо узнать немного больше об объекте client.По сути, он проверяет, содержит ли нечувствительное к регистру значение имени на клиентском объекте нечувствительное к регистру значение клиентского объекта (в виде строки).Так что, если имя клиента содержит строковое имя самого класса, по существу.

1 голос
/ 25 февраля 2011

.ToLower () возвращает ту же строку, в которой вы ее вызывали, строчными буквами. По сути, этот оператор возвращает true, если name.ToLower () внедрен где-нибудь в client.name.ToLower ().

//If:<br/>
client.name = "nick, bob, jason";
name = "nick";
//Then:<br/>
client.name.ToLower().Contains(name.ToLower());
//would return true
1 голос
/ 25 февраля 2011

Мне кажется, LINQ * 1002.

В настоящее время я не очень осведомлен о .NET, но я бы прочитал, что ищу client объектычье свойство name является нечувствительным к регистру соответствием со свойством ToString переменной client, но допускает дополнительные символы до или после, во многом как WHERE foo is like '%:some_value%' в SQL.Если я прав, кстати, client это ужасное имя переменной в этом случае.

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