0

リストボックスの結果をフィルタリングするテキストボックスがあります。すべて大文字で入力すると、何も返されませんが、すべてが低くなります。何か見逃していないか確認したい。これが私が使用しているものです。

ありがとう

private void Filter(object sender, FilterEventArgs e)
{

    var src = e.Item as Users;
    if (src == null)
        e.Accepted = false;
    //else if (src.Name!= null && !src.Name.Contains(Search))
    else if (src.Name!= null && !src.Name.ToLower().Contains(Search))
        e.Accepted = false;
}
4

2 に答える 2

2

内部的には、 string.ContainsはIndexOfOrdinalCompare列挙型を使用して実装されています。
したがって、元の文字列の新しいコピーを返すメソッドにIndexOf必要なペナルティを被ることなく、コードを変更して simple を使用することができます。ToLower

if (src == null || string.IsNullOrEmpty(src.Name))
    e.Accepted = false;
else if (src.Name.IndexOf(Search, StringComparison.CurrentCultureIgnoreCase) < 0)
    e.Accepted = false;

文字列は immutableです。つまり、一度作成すると、文字列を変更することはできません。
のようなメソッドは、ToLower実際に新しい文字列オブジェクトを作成して、小文字の種類の文字の新しいシーケンスを保持し、その新しいオブジェクトが返されます。

于 2013-04-09T21:40:48.400 に答える