W C# aby zapisać łańcuch znaków korzystamy z obiektu klasy String. Dzięki czemu możemy wykorzystywać metody tej klasy. Każdy obiekt klasy String to niezmienna sekwencja znaków Unicode.

Aby stworzyć łańcuch znaków wystarczy zainicjować zmienną typu string i przypisać jej wartość w cudzysłowach:

string tekst = "Przykładowy łańcuch znaków";

Możemy odwołać się do dowolnego znaku w zmiennej typu string podając jego indeks w nawiasach klamrowych: zmienna[indeks]. Należy pamiętać o tym, że numerację indeksu zaczynamy od 0.

Zobaczmy przykład:

using System;
class Program {
    static void Main() {
       string a = "napis";
       Console.WriteLine("Wartość zmiennej a:"+ a);
       Console.WriteLine("Wartość znaku o indeksie 0 zmiennej a:" + a[0]);
       Console.WriteLine("Wartość znaku o indeksie 4 zmiennej a:" + a[4]);
       Console.ReadLine();
       
    }
}

W metodzie Main() zadeklarowałem zmienną typu string o nazwie a nadałem jej wartość i wyświetliłem ją na ekranie. Następnie wyświetliłem wartość znaku o indeksie 0 i 4 z zmiennej a.

Rezultat działania aplikacji:

Lancuchy znakow

Rys. Wyświetlenie wybranych znaków w zmiennej nazwie a

Należy jednak pamiętać, że znak do którego się odwołujemy jest tylko do odczytu:

Zobaczmy przykład:

using System;
class Program {
    static void Main() {
       string a = "napis";
       a[2] = 'v';       
    }
}

W metodzie Main() zadeklarowałem zmienną typu string o nazwie a nadałem jej wartość. Następnie próbuje zmienić wartość znaku ze zmiennej a o indeksie 2. Kompilator zgłasza następujący błąd:

Lancuchy znakow

Rys. Błąd zgłoszony przez kompilator

Jak widzimy nie możemy zmienić wartości znaku dla zmiennej typu string.

Łączenie łańcuchów znaków

Łączenie ze sobą łańcuchów znaków odbywa się za pomocą operatora +. Operację tą nazywamy konkatencja łańcuchów.

Zobaczmy przykład:

class Program {
        static void Main() {
            string nap1 = "Napis 1";
            string nap2 = "Napis 2";
            string nap3 = nap1 + nap2;
            Console.WriteLine(nap3);
            Console.ReadLine(); 
        }
    }

 

Oto rezultat działania naszej aplikacji:

Lancuchy znakow

Rys. Konkatencja łańcuchów

Kompilator zamienia operator + na statyczną metodę String.Concat()

class Program {
        static void Main() {
            string nap1 = "Napis 1 ";
            string nap2 = "Napis 2";
            string nap3 = String.Concat(nap1, nap2);
            Console.WriteLine(nap3);
            Console.ReadLine(); 
        }
    }

 

Efekt działania aplikacji będzie identyczny. Wygodniejszy w stosowaniu jest operator.

Gdy modyfikowany jest obiekt klasy String zwracana jest wtedy jego zmodyfikowana kopia. Oryginalny obiekt zostaje w pamięci aż do usunięcia przez Garbage Collector. Ma to oczywiście wpływ na wydajność programu i w przypadku gdy często modyfikujemy łańcuchy znaków powinniśmy używać klasy StringBuilder.

Aby rozszerzyć swoją wiedzę na temat łańcuchów znaków zapraszam do zapoznania się z cyklem artykułów poświęcony temu zagadnieniu: LINK