Przy zmianie kolejności znaków w stringu dostaje wynik z kosmosu

0

Witam z kodu

string f1 = "FFFF";
string frame = f1[2] + f1[3] + " " + f1[0] + f1[1]; 

Po wydrukowaniu zmiennej frame dostaje "140 FF"
Ktoś wie co może być przyczyną?

0

Dodam jeszcze, że po rozdzieleniu dwóch pierwszych "FF" dodatkową spacją t.j.

string frame = f1[2] + " " + f1[3] + " " + f1[0] + f1[1];
 

dostaję ładne "F F FF"

1

f1[2] + f1[3] jest traktowane jako dodawanie liczb ('F' w tablicy ASCII ma wartość 70)

0

No tak, a dlaczego dwa pozostałe drukuje dobrze?

1

W momencie gdy jedna strona dodawania jest stringiem całość jest traktowana jako konkatenacja stringów, a liczba jest konwertowana na jej reprezentację liczbowątekstową. Czyli dodając

140 + " "

dostajesz string

"140 "

Potem dodanie tego stringa do f1[0] powoduje dalszą konkatenację, itd.

Inaczej mówiąc, dodaj "" + na sam początek i powinno być dobrze.

0

Okey, dodałem już wcześniej

 f1[2].ToString() 

ale byłem ciekaw dlaczego dzieje się tak a nie inaczej.
Dzięki za odpowiedź. :)

1

Bardziej polecałbym string.Format() zamiast bawic sie w takie cos. Czytelniej, no i nie dostaniesz znakow z kosmosu ;)

1 użytkowników online, w tym zalogowanych: 0, gości: 1