public static int IndexOf(string chars,string str) { for (int i = 0; i < str.Length; i++) { if (str[i] != chars[0]) continue; if (i + (chars.Length ) > str.Length) return -1; if (str.Substring(i, chars.Length) == chars) return i; } return -1; } static void Main(string[] args) { Stopwatch sw = new Stopwatch(); sw.Start(); for (int i = 0; i < 200000; i++) IndexOf("abcsdas", "bcbabcbsbssadasdasdasdabcdabcbabcbsbssadasdasdasdabcdabcbabcbsbssadasdasdasdabcdabcbabcbsbssadasdasdasdabcdabcbabcbsbssadasdasdasdabcdabcbabcbsbssadasdasdasdabcdabcbabcbsbssadasdasdasdabcda"); sw.Stop(); Console.WriteLine(sw.ElapsedMilliseconds); sw = new Stopwatch(); sw.Start(); for (int i = 0; i < 200000; i++) "bcbabcbsbssadasdasdasdabcdabcbabcbsbssadasdasdasdabcdabcbabcbsbssadasdasdasdabcdabcbabcbsbssadasdasdasdabcdabcbabcbsbssadasdasdasdabcdabcbabcbsbssadasdasdasdabcdabcbabcbsbssadasdasdasdabcda".IndexOf("abcsdas"); sw.Stop(); Console.WriteLine(sw.ElapsedMilliseconds); Console.Read(); }
这个方法对重复比较多的字符串自然是表现很差的