Char Traversal的Char Char怎么可能?

use*_*276 0 c# enumeration

当我应用IEnumerator并执行MoverNext()时,它会像C风格一样遍历, 'a' 'p' 'p' 'l' 'e' '\o' 直到找到空字符吗?我认为它会返回整个字符串.枚举如何在这里工作?

    string ar = "apple";

    IEnumerator enu = ar.GetEnumerator();

    while (enu.MoveNext())
    {

        Console.WriteLine(enu.Current);
    }
Run Code Online (Sandbox Code Playgroud)

我输出为

a
p
p
l
e
Run Code Online (Sandbox Code Playgroud)

Eri*_*ert 8

字符串在C#中不以空值终止.或者更确切地说,字符串以空值终止的事实是对用户隐藏的实现细节.字符串"apple"有五个字符,而不是六个字符.你要求看到这五个字符,我们会向你展示这五个字符.没有第六个空字符.

  • 我没有设计字符串实现,所以我不能肯定他们在想什么.但是,在将字符串视为固定内存缓冲区时使用常用习惯用语似乎是一个合理的设计目标.是的,因为字符串的Length属性是一个int,它将chars的数量限制为最大的int. (3认同)