【发布时间】:2017-09-08 19:15:28
【问题描述】:
出于好奇,我试图在不使用属性或方法的情况下确定字符串长度,这在 C 中有效,但对于 \0 的概念来说仍然是一种新事物。
据我了解,我说的是C,这个字符是在为某个字符串设置值后自动放置的东西,这样就可以确定需要多少空间来存储,但是这在 C# 中是如何工作的?
string str = "someText";
int lenght = 0;
while (str[lenght]!='\0')
{
lenght++;
}
Console.WriteLine(str);
Console.WriteLine("String lenght is : "+ lenght);
Console.ReadLine();
【问题讨论】:
-
C# 字符串不是以 null 结尾的。
-
在询问它是如何工作的之前,您是否尝试过调试和跟踪它?发生的事情应该很明显......
-
字符串有两个字段:
int m_stringLength和char _firstChar,它们不是以空结尾的,因为长度是已知的。 编辑: 实际上,它们是空终止的,这是来自 coreclr 存储库的注释:" // 对于空字符串,这将是 '\0',因为 // 字符串既是空终止的又是长度前缀” -
@LeonardoAlvesMachado 确实如此;
String类上提供长度的方法是Length属性。 -
在 c# 中,字符串的最后一个字符不是 C 中的空值字符。您可能需要捕获 IndexOutOfRangeException 来确定字符串的结尾。
标签: c# string-length