在 C/C++ 中,字符串存储在一个char
数组 AFAIR 中,没有智能和行为。因此,要表明这样的数组在某处结束,必须在末尾添加 \0。
另一方面,在 C# 中,字符串是一个容器(具有属性和方法的类);作为旁注,您可以将 null 分配给其实例化对象。您无需向其中添加任何内容来指示它的结束位置。容器为您控制一切。因此,它也有迭代器(或我认为 C# 中的枚举器)。这意味着您可以使用foreach
andLINQ
表达式对其进行迭代。
话虽如此,您可以在与此类似的代码中使用简单的计数器来获取字符串的长度:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace LengthOfString
{
class Program
{
static void Main(string[] args)
{
string s = "abcde\0\0\0";
Console.WriteLine(s);
Console.WriteLine("s.Length = " + s.Length);
Console.WriteLine();
// Here I count the number of characters in s
// using LINQ
int counter = 0;
s.ToList()
.ForEach(ch => {
Console.Write(string.Format("{0} ", (int)ch));
counter++;
});
Console.WriteLine(); Console.WriteLine("LINQ: Length = " + counter);
Console.WriteLine(); Console.WriteLine();
//Or you could just use foreach for this
counter = 0;
foreach (int ch in s)
{
Console.Write(string.Format("{0} ", (int)ch));
counter++;
}
Console.WriteLine(); Console.WriteLine("foreach: Length = " + counter);
Console.WriteLine(); Console.WriteLine(); Console.WriteLine(); Console.WriteLine();
Console.WriteLine("Press ENTER");
Console.ReadKey();
}
}
}