這是正確的嗎?C#字符串表現得像字符數組
string a;
a = Console.ReadLine();
for (int i = 0; a[i] != '\0'; i++)
{
Console.WriteLine(a[i]);
}
這是正確的嗎?C#字符串表現得像字符數組
string a;
a = Console.ReadLine();
for (int i = 0; a[i] != '\0'; i++)
{
Console.WriteLine(a[i]);
}
不,這是不正確的,因爲C#字符串通常不以NUL字符結尾。
你需要使用i < a.Length
,而不是尋找到數組終止循環。
與C和C++,在c#字符串不是NUL
封端。相反,您可以通過Length
屬性獲取其長度。要打印一行的每個字符,你可以使用:
string a;
a = Console.ReadLine();
for (int i = 0; i< a.Length; i++)
{
Console.WriteLine(a[i]);
}
或者,使用foreach
:
foreach(char c in a)
{
Console.WriteLine(c);
}
而且,儘管a[i]
語法,在.net中的字符串不是字符數組,它們是(不可變的)對象。它們可能使用char數組實現,但這是另一回事。您可以使用a[i]
語法的原因是因爲String
定義了一個索引器。
你也可以這樣做:
string a;
a = Console.ReadLine();
foreach(var c in a)
{
Console.WriteLine(c);
}
不,這不是正確的,因爲NULL字符不是存儲在string
。我將與foreach
語句做到這一點:
string a = Console.ReadLine();
foreach (var myChar in a)
{
Console.WriteLine(myChar);
}
不,這是不行的。 C#字符串是而不是NUL
- 終止。相反,他們存儲一個長度屬性。這在垃圾收集語言中很常見。作爲一個例子,這使得有效的字符串:
string a = "a string ";
a += '\0';
a += " still the same string";
你可以做的是這樣的:
foreach (char c in a)
{
Console.WriteLine(c);
}
或本:
for (int i=0;i<a.Length;i++)
{
Console.WriteLine(a[i]);
}
是的,爲什麼不訪問它呢? – Lasooch
正確的是什麼意思? – rhughes
這是不正確的,它會崩潰 - 請參閱下面的答案。 –