C# 对于每个string.IndexOf(char)bug?

C# 对于每个string.IndexOf(char)bug?,c#,.net,string,.net-4.5,indexof,C#,.net,String,.net 4.5,Indexof,给出输出 0 1. 2. 3. 4. 5. 1. 7. 8. 9 10 8. 10 13 13 10 3. 2. 8. 19 10 三, 我期待着 01 2 3 4 5 6 7 8 9 10 11 12 13 15 16 18 19 20 21 这是错误还是我的假设不正确?它提供字符串中第一次出现的索引 查看输入字符串,当它点击1时,它会给你索引10,当它点击下一个1时,它会再次给你 对于这种方法,政府必须这样说: 报告此实例中第一次出现的指定字符串的从零开始的索引 编辑:ElementAt(i

给出输出

0 1. 2. 3. 4. 5. 1. 7. 8. 9 10 8. 10 13 13 10 3. 2. 8. 19 10 三,

我期待着

01 2 3 4 5 6 7 8 9 10 11 12 13 15 16 18 19 20 21


这是错误还是我的假设不正确?

它提供字符串中第一次出现的索引

查看输入字符串,当它点击1时,它会给你索引10,当它点击下一个1时,它会再次给你

对于这种方法,政府必须这样说:

报告此实例中第一次出现的指定字符串的从零开始的索引

编辑:
ElementAt(int-index)
需要一个索引。使用它会在第一个字母
G
处崩溃。它将采用它的UTF-16代码,即71,并突破边界

您的期望将通过以下方式得到满足:

var str = "GB29NWBK60161331926819"

foreach (var item in str.ToCharArray())
{
    Debug.WriteLine(str.IndexOf(item));
}
var str=“GB29NWBK60161331926819”;
对于(int i=0;i
您的假设是不正确的,因为函数返回字符串中匹配的第一次出现,如果函数匹配,它将返回-1

您的预期输出将仅对由唯一字符组成的字符串正确


这绝对不是一个bug,因为您的字符串有重复项
IndexOf
不会区分
GB
中的
B
BWBK
部分中的
B
,为您提供字符串中字符的第一个索引。

您的意思是str.tocharray()中的
var项。
您对ASCII的引用具有误导性。字符串是的代码单元的计数序列。ElementAt返回其中一个UTF-16代码单元。Thanx作为提示。我将进行编辑并更正它。
var str = "GB29NWBK60161331926819";

for (int i = 0; i < str.Length; i++)
{
    Debug.WriteLine(i);
}