CharEnumerator.Current Właściwość
Definicja
Ważne
Niektóre informacje odnoszą się do produktu w wersji wstępnej, który może zostać znacząco zmodyfikowany przed wydaniem. Firma Microsoft nie udziela żadnych gwarancji, jawnych lub domniemanych, w odniesieniu do informacji podanych w tym miejscu.
Pobiera aktualnie przywoływany znak w ciągu wyliczanym przez ten CharEnumerator obiekt.
public:
property char Current { char get(); };
public char Current { get; }
member this.Current : char
Public ReadOnly Property Current As Char
Wartość właściwości
Znak Unicode, do który odwołuje się obecnie ten CharEnumerator obiekt.
Implementuje
Wyjątki
Indeks jest nieprawidłowy; oznacza to, że jest przed pierwszym lub po ostatnim znaku wyliczonego ciągu.
Przykłady
W poniższym przykładzie użyto CharEnumerator klasy , aby wyliczyć poszczególne znaki w ciągu. Tworzy wystąpienie CharEnumerator obiektu przez wywołanie String.GetEnumerator metody , przenosi się z jednego znaku do następnego przez wywołanie MoveNext metody i wyświetla bieżący znak przez pobranie wartości Current właściwości.
String ^ title = "A Tale of Two Cities";
CharEnumerator ^ chEnum = title->GetEnumerator();
int ctr = 1;
String ^ outputLine1 = nullptr;
String ^ outputLine2 = nullptr;
String ^ outputLine3 = nullptr;
while (chEnum->MoveNext())
{
outputLine1 += ctr < 10 || ctr % 10 != 0 ? " " : (ctr / 10) + " ";
outputLine2 += (ctr % 10) + " ";
outputLine3 += chEnum->Current + " ";
ctr++;
}
Console::WriteLine("The length of the string is {0} characters:",
title->Length);
Console::WriteLine(outputLine1);
Console::WriteLine(outputLine2);
Console::WriteLine(outputLine3);
// The example displays the following output to the console:
// The length of the string is 20 characters:
// 1 2
// 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0
// A T a l e o f T w o C i t i e s
string title = "A Tale of Two Cities";
CharEnumerator chEnum = title.GetEnumerator();
int ctr = 1;
string outputLine1 = null;
string outputLine2 = null;
string outputLine3 = null;
while (chEnum.MoveNext())
{
outputLine1 += ctr < 10 || ctr % 10 != 0 ? " " : (ctr / 10) + " ";
outputLine2 += (ctr % 10) + " ";
outputLine3 += chEnum.Current + " ";
ctr++;
}
Console.WriteLine("The length of the string is {0} characters:",
title.Length);
Console.WriteLine(outputLine1);
Console.WriteLine(outputLine2);
Console.WriteLine(outputLine3);
// The example displays the following output to the console:
// The length of the string is 20 characters:
// 1 2
// 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0
// A T a l e o f T w o C i t i e s
let title = "A Tale of Two Cities"
let chEnum = title.GetEnumerator()
printfn $"The length of the string is {title.Length} characters:"
let mutable outputLine1 = ""
let mutable outputLine2 = ""
let mutable outputLine3 = ""
let mutable i = 1
while chEnum.MoveNext() do
outputLine1 <- outputLine1 + if i < 10 || i % 10 <> 0 then " " else $"{i / 10} "
outputLine2 <- outputLine2 + $"{i % 10} ";
outputLine3 <- outputLine3 + $"{chEnum.Current} "
i <- i + 1
printfn "%s" outputLine1
printfn "%s" outputLine2
printfn "%s" outputLine3
// The example displays the following output to the console:
// The length of the string is 20 characters:
// 1 2
// 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0
// A T a l e o f T w o C i t i e s
Dim title As String = "A Tale of Two Cities"
Dim chEnum As CharEnumerator = title.GetEnumerator()
Dim ctr As Integer = 1
Dim outputLine1, outputLine2, outputLine3 As String
Do While chEnum.MoveNext()
outputLine1 += CStr(iif(ctr < 10 Or ctr Mod 10 <> 0, " ", CStr(ctr \ 10) + " "))
outputLine2 += (ctr Mod 10)& " "
outputLine3 += chEnum.Current & " "
ctr += 1
Loop
Console.WriteLine("The length of the string is {0} characters:", _
title.Length)
Console.WriteLine(outputLine1)
Console.WriteLine(outputLine2)
Console.WriteLine(outputLine3)
' The example displays the following output to the console:
' The length of the string is 20 characters:
' 1 2
' 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0
' A T a l e o f T w o C i t i e s
Należy jednak pamiętać, że tę samą operację można wykonać nieco bardziej intuicyjnie przy użyciu metody foreach
(w języku C#) lub For Each
(w Visual Basic), jak pokazano w poniższym przykładzie.
String ^ title = "A Tale of Two Cities";
int ctr = 1;
String ^ outputLine1 = nullptr;
String ^ outputLine2 = nullptr;
String ^ outputLine3 = nullptr;
for each (wchar_t ch in title)
{
outputLine1 += ctr < 10 || ctr % 10 != 0 ? " " : (ctr / 10) + " ";
outputLine2 += (ctr % 10) + " ";
outputLine3 += ch + " ";
ctr++;
}
Console::WriteLine("The length of the string is {0} characters:",
title->Length);
Console::WriteLine(outputLine1);
Console::WriteLine(outputLine2);
Console::WriteLine(outputLine3);
// The example displays the following output to the console:
// The length of the string is 20 characters:
// 1 2
// 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0
// A T a l e o f T w o C i t i e s
string title = "A Tale of Two Cities";
int ctr = 1;
string outputLine1 = null;
string outputLine2 = null;
string outputLine3 = null;
foreach (char ch in title)
{
outputLine1 += ctr < 10 || ctr % 10 != 0 ? " " : (ctr / 10) + " ";
outputLine2 += (ctr % 10) + " ";
outputLine3 += ch + " ";
ctr++;
}
Console.WriteLine("The length of the string is {0} characters:",
title.Length);
Console.WriteLine(outputLine1);
Console.WriteLine(outputLine2);
Console.WriteLine(outputLine3);
// The example displays the following output to the console:
// The length of the string is 20 characters:
// 1 2
// 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0
// A T a l e o f T w o C i t i e s
let title = "A Tale of Two Cities"
let chEnum = title.GetEnumerator()
printfn $"The length of the string is {title.Length} characters:"
let mutable outputLine1 = ""
let mutable outputLine2 = ""
let mutable outputLine3 = ""
let mutable i = 1
for ch in title do
outputLine1 <- outputLine1 + if i < 10 || i % 10 <> 0 then " " else $"{i / 10} "
outputLine2 <- outputLine2 + $"{i % 10} ";
outputLine3 <- outputLine3 + $"{ch} "
i <- i + 1
printfn "%s" outputLine1
printfn "%s" outputLine2
printfn "%s" outputLine3
// The example displays the following output to the console:
// The length of the string is 20 characters:
// 1 2
// 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0
// A T a l e o f T w o C i t i e s
Dim title As String = "A Tale of Two Cities"
Dim ctr As Integer = 1
Dim outputLine1, outputLine2, outputLine3 As String
For Each ch As Char In title
outputLine1 += CStr(iif(ctr < 10 Or ctr Mod 10 <> 0, " ", CStr(ctr \ 10) + " "))
outputLine2 += (ctr Mod 10)& " "
outputLine3 += ch & " "
ctr += 1
Next
Console.WriteLine("The length of the string is {0} characters:", _
title.Length)
Console.WriteLine(outputLine1)
Console.WriteLine(outputLine2)
Console.WriteLine(outputLine3)
' The example displays the following output to the console:
' The length of the string is 20 characters:
' 1 2
' 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0
' A T a l e o f T w o C i t i e s
Uwagi
Klasa CharEnumerator utrzymuje indeks wewnętrzny do wyliczonego ciągu, a Current właściwość zwraca znak, który jest obecnie przywoływany przez indeks. Ta właściwość powinna być wywoływana tylko wtedy, gdy indeks jest prawidłowy; w przeciwnym razie zgłaszany jest wyjątek.
Indeks jest zawsze nieprawidłowy dla pustego ciągu (""). Indeks jest również nieprawidłowy po wywołaniu String.GetEnumerator metody or Reset . Po wywołaniu jednej z tych metod wywołaj metodę MoveNext , aby dostosować indeks do pierwszego znaku w wyliczonego ciągu. Indeks jest prawidłowy za każdym razem, gdy MoveNext metoda zwróci true
wartość .
Currentnie przenosi indeksu, a kolejne wywołania w celu Current zwrócenia tego samego znaku do ResetMoveNext, lub String.GetEnumerator jest wywoływane.