Teskari usuldan foydalanib, qatorni qanday qaytarish mumkin. C #

Nima uchun men teskari usulni qo'llaganimda hech narsa o'zgarmaydi.

public static string ReverseString(string word)
    {
        char[] myArray = word.ToCharArray();
        myArray.Reverse();

        string ans = string.Join("", myArray);

        return ans;
    }
1
myArray = myArray.Reverse ();
qo'shib qo'ydi muallif Gusman, manba
Unicode belgilarini birlashtiruvchi ushbu usulning bir versiyasi uchun quyidagi savolni ko'ring: stackoverflow.com/q/15029238/1127114
qo'shib qo'ydi muallif Michael Liu, manba
O'rnatish uchun Array.Reverse() dan foydalaning
qo'shib qo'ydi muallif Adriano Repetti, manba
Yangi qatorni qaytaradi, asl nusxasini o'zgartirmaydi
qo'shib qo'ydi muallif Sami Kuhmonen, manba
Bajarildi. rahmat
qo'shib qo'ydi muallif Callum, manba

7 javoblar

Ehtimol, foydalanadigan usulni Array.Reverse bilan chalkashtirib yuborasiz, albatta bu void usuli hisoblanadi?

Array.Reverse Method (Array)


Siz foydalanadigan kod - IEnumerable ning LINQ kengaytmasi usuli, bu erda siz bu erda topishingiz mumkin:

Enumerable.Reverse Method (IEnumerable)


Sizning shaxsiy ishingiz uchun, men ushbu ishni bajaruvchidan foydalanaman:

return new string(word.Reverse().ToArray()); 
6
qo'shib qo'ydi

Muammo shuki, myArray.Reverse() myArray-ni o'zgartirmaydi. Ushbu usul myArray ning teskari qismida IEnumerable-ni qaytaradi.

Buni ko'ring:

var reversed = myArray.Reverse();

Va keyin teskari ish bilan.

4
qo'shib qo'ydi

myArray.Reverse() o'rniga Array.Reverse (myArray) harakat qilib ko'ring.

You are confusing Enumerable.Reverse and Array.Reverse methods.

IEnumerable.Reverse: Returns a new reversed array without changing the old array

myArray = myArray.Reverse();

Array.Reverse: A Void method that will reverse the input array

Array.Reverse(myArray);
0
qo'shib qo'ydi
@Callum Sizni xush ko'rasiz
qo'shib qo'ydi muallif Mhd, manba
Yo, bu katta rahmat
qo'shib qo'ydi muallif Callum, manba

Qaytish qiymatini o'zgaruvchiga saqlashingiz kerak:

var reversed = myArray.Reverse();

Bu siz foydalanadigan Reverse() usuli uchun imzo bo'lib, bu Enumerable sinfida kengaytma usuli hisoblanadi:

public static IEnumerable Reverse(this IEnumerable source);

Qaytish turiga qarang IEnumerable , shuning uchun uni saqlab qo'yish va undan keyin ishlash kerak bo'ladi.

Buni faqatgina qilishingiz mumkin:

public static string ReverseString(string word)
{
    return string.IsNullOrWhiteSpace(word) ? string.Empty 
        :  string.Concat(word.Reverse());
}
0
qo'shib qo'ydi

teskari usulida asl elementlarga asoslangan yangi qator (yoki yig'ish) qaytaradigan usul.

public static string ReverseString(string word)
{
    char[] myArray = word.ToCharArray();
    myArray = myArray.Reverse().ToArray(); //<-- Call ToArray() method to convert back to the array and execute the deffered action.

    string ans = string.Join("", myArray);

    return ans;
}

Ushbu uslub ertelenmiş ijro etuvchi yordamida amalga oshiriladi. Tezda   qaytish qiymati, barcha ma'lumotlarni saqlaydigan ob'ekt   harakatni amalga oshirish uchun zarur. Ushbu usul bilan ifodalangan so'rov   ob'ekt chaqirilgunicha yoki uning chaqirilgunicha bajarilmaydi   GetEnumerator usuli to'g'ridan-to'g'ri yoki foreach yordamida Visual C# yoki For uchun   Visual Basic'da har biri.

     

OrderBy'dan farqli o'laroq, bu tartiblash usuli haqiqatni hisobga olmaydi   Buyurtmani aniqlashda o'zlarini qadrlaydi. Aksincha, u faqat qaytadi   ular tomonidan ishlab chiqarilgan teskari tartibda elementlar   asosiy manba.

0
qo'shib qo'ydi

You should do Array.Reverse(myArray)

0
qo'shib qo'ydi
public static string ReverseString(string word)
{
    return string.Join("", word.Reverse());
}
0
qo'shib qo'ydi
Bo'sh ajratuvchi bilan qo'shilish o'rniga, string.Concat dan foydalanishingiz mumkin.
qo'shib qo'ydi muallif Michael Liu, manba