Cóż, mogę to zrobić w jednej bardzo długiej kolejce, nawet bez używania LINQ lub lambda:
string original = "reverse me"; char[] chars = original.ToCharArray(); char[] reversed = new char[chars.Length]; for (int i=0; i < chars.Length; i++) reversed[chars.Length-i-1] = chars[i]; string reversedValue = new string(reversed);
(redaktorzy: Drodzy potencjalni. zrobić nie rozpakować to na wielu liniach Istotą jest to, że znajduje się w jednej linii, jak na zdaniu nad nim i pytanie.)
Jednakże, gdybym zobaczył, że ktoś unika stosowania metod ramowych ze względu na to, zastanawiałbym się nad ich zdrowiem.
Zauważ, że to wcale nie używa LINQ. LINQ odpowiedź byłaby:
string reverseValue = new string(original.Reverse().ToArray());
Unikanie stosując odwrotną, ale przy użyciu OrderByDescending zamiast:
string reverseValue = new string(original.Select((c, index) => new { c, index })
.OrderByDescending(x => x.index)
.Select(x => x.c)
.ToArray());
Blech. Podoba mi się jednak odpowiedź Mehrdada. Oczywiście wszystkie z nich są znacznie mniej wydajne niż proste podejście.
Och, i one też się mylą. Odwracanie łańcucha jest bardziej złożone niż odwrócenie kolejności punktów kodowych. Rozważyć połączenie znaków zastępczych, pary itp ...
tylko jedno pytanie: dlaczego? –
Jestem zdezorientowany .... dlaczego nie chcesz użyć metody Array.Reverse? – James
jak LINQ lub lambda są lepsze niż bardziej odpowiednie metody ciągów? –