【发布时间】:2023-03-31 05:36:01
【问题描述】:
这个程序抛出ArrayIndexOutOfBoundException。
string name = "Naveen";
int c = 0;
while( name[ c ] != '\0' ) {
c++;
}
Console.WriteLine("Length of string " + name + " is: " + c);
为什么会这样?
如果字符串不是以空值结尾的。在 C# 中如何处理字符串?
如何在不使用 string.Length 属性的情况下获得长度?
我在这里很困惑。!
【问题讨论】:
-
你为什么不想使用
string.Length? -
你为什么不想使用长度属性来获取长度??
-
我想终止字符串中包含 '\0' 的给定字符串。?例如:“Nav\0een”。
-
“为什么会这样?”因为以空结尾的字符串是个坏主意……这意味着字符串不能包含嵌入的空字符,并且如果不对其进行迭代就无法找到字符串的长度……
-
那么该字符串以什么方式以空值结尾?那是一个长度为 7 的字符串,而不是长度为 3 的字符串。您可以轻松地 find 第一个空字符之前的部分,并根据需要获取该子字符串,但您应该真正解释更多关于 为什么你要这样做,因为这是一个相当奇怪的要求。
标签: c# .net string null-terminated