asp.net(c#)2.0 开发webform先贴一下我的代码:
public bool IsInDD(string DD)
{
bool SS = Array.BinarySearch<string>(_DD, DD) >= 0;
return SS;
}
其中_DD是字符串数组.假设前提:_DD中包含有一个值与DD相等我断点调试的时候,发现一个奇怪的问题:如果_DD中的值的数量比较少,那么SS的值为TRUE,如果_DD中的值的数量比较多(10个以上),那么SS就为FALSE了有人能帮我解释一下这个现象吗???我想要实现的功能是: 如果_DD中含有一个值与DD相等,那么返回TRUE,请问代码怎么改?关注^^^^
public bool IsInDD(string DD)
{
bool SS = Array.BinarySearch<string>(_DD, DD) >= 0;
return SS;
}
其中_DD是字符串数组.假设前提:_DD中包含有一个值与DD相等我断点调试的时候,发现一个奇怪的问题:如果_DD中的值的数量比较少,那么SS的值为TRUE,如果_DD中的值的数量比较多(10个以上),那么SS就为FALSE了有人能帮我解释一下这个现象吗???我想要实现的功能是: 如果_DD中含有一个值与DD相等,那么返回TRUE,请问代码怎么改?关注^^^^
LZ:1、Array.BinarySearch<string>(_DD, DD),这个有人能为我解释吗?我断点调试了一下,发现如果当_DD中的值比较多的时候,即使DD的值存在于_DD中,那么返回的却是-1,而不是对应的索引
2、查找某个值是否存在于数组中,笨点的办法是,手写循环来比较。有更好的办法否?C#中没有提供这种类型的函数?
using System;
using System.Collections.Generic;
using System.Text;
using System.Collections;namespace StrEdit
{
class Program
{
protected static bool SearchStr()
{
string[] _DD = new string[100];
for (int i = 0; i < 100;i++ )
{
_DD[i] = i.ToString();
}
_DD[50] = "AA";
string DD = "85";
bool SS = Array.BinarySearch<string>(_DD, DD) >= 0;
DD = "aa";
//数组排序的方法需自己实现
SS = Array.BinarySearch<string>(_DD, DD) >= 0;
SS = Array.BinarySearch<string>(_DD, DD, new MyStringComparer()) >= 0;
ArrayList strArray = new ArrayList();
for (int i = 0; i < 100; i++)
{
strArray.Add(i.ToString());
}
strArray[10]="AA";
SS = strArray.BinarySearch("aa") >= 0;
strArray.Sort();
SS= strArray.BinarySearch("aa")>=0;
SS = strArray.BinarySearch("aa", new MyStringListComparer()) >= 0;
return SS;
}
//不区分大小写的IComparer实现
protected class MyStringComparer:System.Collections.Generic.IComparer<string>
{
public int Compare(string str1, string str2)
{
return string.Compare(str1, str2, true);
}
} protected class MyStringListComparer : System.Collections.IComparer
{
public int Compare(object str1, object str2)
{
if(object.Equals(str1, str2))
{
return 0;
}
return string.Compare(str1.ToString(), str2.ToString(), true);
}
}
static void Main(string[] args)
{
SearchStr();
}
}
}
using System;
using System.Collections.Generic;
using System.Text;
using System.Collections;namespace StrEdit
{
class Program
{
protected static bool SearchStr()
{
string[] _DD = new string[100];
for (int i = 0; i < 100;i++ )
{
_DD[i] = i.ToString();
}
_DD[50] = "AA";
string DD = "85";
bool SS = Array.BinarySearch<string>(_DD, DD) >= 0;
DD = "aa";
//数组排序的方法需自己实现
SS = Array.BinarySearch<string>(_DD, DD) >= 0;
SS = Array.BinarySearch<string>(_DD, DD, new MyStringComparer()) >= 0;
ArrayList strArray = new ArrayList();
for (int i = 0; i < 100; i++)
{
strArray.Add(i.ToString());
}
strArray[10]="AA";
SS = strArray.BinarySearch("aa") >= 0;
strArray.Sort();
SS= strArray.BinarySearch("aa")>=0;
SS = strArray.BinarySearch("aa", new MyStringListComparer()) >= 0;
return SS;
}
//不区分大小写的IComparer实现
protected class MyStringComparer:System.Collections.Generic.IComparer<string>
{
public int Compare(string str1, string str2)
{
return string.Compare(str1, str2, true);
}
} protected class MyStringListComparer : System.Collections.IComparer
{
public int Compare(object str1, object str2)
{
if(object.Equals(str1, str2))
{
return 0;
}
return string.Compare(str1.ToString(), str2.ToString(), true);
}
}
static void Main(string[] args)
{
SearchStr();
}
}
}这样看起来舒服点 跟踪下IComparer的实现就明白了