出于好奇,我试图在不使用属性或方法的情况下确定字符串长度,这可以在 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();
答案 0 :(得分:3)
将字符串视为抽象的字符序列。有多种方法可以在计算机库中实现这种序列。以下是一些例子:
'\0'
终止。 C使用此表示法。也可以使用混合表示,例如在长度和数组表示中存储以null结尾的字符串。
C#使用长度前缀和以null结尾的字符串的组合,并且还允许将空字符嵌入到字符串中。但是,这并不意味着您可以访问空终止符或长度字节,因为与C不同,C#执行绑定检查,并在尝试访问字符串末尾时抛出异常。
答案 1 :(得分:1)
字符串是
String
类型的对象,其值为文本。在内部,文本存储为Char对象的顺序只读集合。 C#字符串末尾没有空终止字符;因此,C#字符串可以包含任意数量的嵌入空字符(' \ 0')。字符串的Length属性表示它包含的Char对象的数量,而不是Unicode字符的数量。要访问字符串中的各个Unicode代码点,请使用StringInfo对象。
https://docs.microsoft.com/en-us/dotnet/csharp/programming-guide/strings/
C#字符串没有终止字符。相反,它们的实际长度与文本本身一起存储。这称为length-prefixed strings。
您可以使用Length
属性访问长度。
答案 2 :(得分:0)
在C中,nul字符终止作为字符数组处理的字符串是标准库支持的约定。它不是语言本身的一部分。请注意,没有任何内容可以自动地"在设置C字符串值时放置一个空字符,它由库和编译器处理常量。
C#不使用nul终止字符串,所以这些都不适用。
答案 3 :(得分:-1)
这是C#代码
string str = "someText";
int lenght = 0;
foreach (char c in str)
{
lenght++;
}
Console.WriteLine(str);
Console.WriteLine("String lenght is : "+lenght);
Console.ReadLine();