C# Language
Niezmienność
Szukaj…
Klasa System.String
W C # (i .NET) ciąg jest reprezentowany przez klasę System.String. string
kluczowe string
jest aliasem dla tej klasy.
Klasa System.String jest niezmienna, tzn. Po utworzeniu jej stanu nie można zmienić.
Tak więc wszystkie operacje wykonywane na łańcuchu, takie jak Substring, Remove, Replace, konkatenacja za pomocą operatora +
itd. Utworzą nowy ciąg i zwrócą go.
Zobacz następujący program demonstracyjny -
string str = "mystring";
string newString = str.Substring(3);
Console.WriteLine(newString);
Console.WriteLine(str);
Spowoduje to wydrukowanie odpowiednio string
i mystring
.
Ciągi znaków i niezmienność
Niezmienne typy to typy, które po zmianie tworzą nową wersję obiektu w pamięci, zamiast zmieniać istniejący obiekt w pamięci. Najprostszym przykładem tego jest wbudowany typ string
.
Biorąc następujący kod, który dodaje słowo „world” do słowa „Hello”
string myString = "hello";
myString += " world";
W tym przypadku dzieje się tak, że nowy obiekt jest tworzony po dodaniu do string
w drugiej linii. Jeśli zrobisz to w ramach dużej pętli, może to spowodować problemy z wydajnością aplikacji.
Zmienny odpowiednik string
to StringBuilder
Biorąc następujący kod
StringBuilder myStringBuilder = new StringBuilder("hello");
myStringBuilder.append(" world");
Po uruchomieniu tego modyfikujesz sam obiekt StringBuilder
w pamięci.