Dizeler. Genel Bakış.

Dize, belirli bir sıradaki karakterlerin bir listesidir (veya dizisidir). Tüm karakter dizisi tek bir nesne olarak ele alınır.

Karakter, klavyede tek bir tuş vuruşuyla (harf, sayı, ters) yazabileceğiniz herhangi bir şeydir eğik çizgi veya başka bir karakter).
Dizelerde boşluk olabilir: "Merhaba dünya!".
Boş bir dize, 0 karakter içeren bir dizedir.
C diyez, tırnak içinde yazılan her şeyi dize olarak kabul eder (""), string, string türündedir.

Unutulmaması gereken önemli: C#'deki dizeler sabittir.

Girdi operatörünü kullanarak bir dizgeye yeni bir değer yazabilirsiniz:
string s = Console.ReadLine(); 
Değişkene basitçe bir dizi değeri de atayabilirsiniz, örneğin:< / açıklık >
string s = "C diyez" 
Bir dizginin uzunluğunu şu şekilde tanımlayabilirsiniz:
int n = s.Length;


Dize karşılaştırması Diziler tıpkı sayılar gibi birbirleriyle karşılaştırılabilir. Çizgilerden hangisinin büyük hangisinin küçük olduğunu belirleyebilirsiniz.

Dizeleri karşılaştırırken, karakter kodları karşılaştırılır. Yüzlerce olmasa da düzinelerce karakter kodlaması vardır. Bu kavramı anlamanın en kolay yolu, en basitlerinden biri olan ASCII'yi anlamaktır (bu konuda buradan< okuyabilirsiniz. /a>) . 
Modern kodlamalarda hem Rusça hem de İngilizce harflerin alfabetik sırayla düzenlendiğini, sayıların da küçükten büyüğe gittiğini anlamak gerekir. 
Örneğin, ASCII kod tablosunda İngilizce 'A' - 65, 'a' harfleri - 97, basamak '0' kodu 48'dir. Rus harfleri ASCII kod tablosunun genişletilmiş kısmında bulunur (128'den 255'e kadar olan sayılar). Büyük harfler küçük harflerden önce gelir (yani daha küçük bir kodu vardır).
Kullanılan kodlama tablolarının çoğunda kalıplar aynıdır, küçük harfler büyük harflerden sonra, sayılar harflerden önce ve Rusça harfler İngilizceden sonra gelir.
C#, karakterleri veya dizeleri karşılaştırırken, karakterleri ilgili sıra değerlerine dönüştürür ve ardından soldan sağa doğru karşılaştırır. 

Örneğin: "lokomotif" < "vapur", çünkü kelimeler beşinci harf ve "in" ile farklıdır < "x".

Bir dize girerken, onu herhangi bir ayırıcıyla hemen parçalara ayırabilirsiniz.
Bunu daha önce aynı satıra birden çok sayısal değişken girdiğimizde yapmıştık. Bir dizeyi parçalara ayırmak için Split() yöntemini kullandık. Varsayılan olarak, dizeleri boşlukla alt dizelere ayırır.
Bu yöntemi kullanarak, dizeyi örneğin boşluklara göre parçalara bölebilirsiniz. Ve dizinin her bir parçasını ayrı bir değişkene yazın.
Örnek:
string[] S = Console.ReadLine().Split();
Örnekte, bir boşlukla ayrılmış iki kelime girerken, ilk kelime s[0] dizisinin sıfır elemanında, ikincisi - ikinci s[1].

Ayırıcı olarak birkaç karakter kullanmanız gerekiyorsa, bunları virgülle ayırarak belirtebilirsiniz:
 
 string[] S = Console.ReadLine().Split(new[] { ' ', '\n' });
 Giriş dizesinde birkaç ardışık boşluk olabilirse, son dizide de boşluklar görünebilir, bunu hariç tutmak için bir parametre eklemeniz gerekir:
string[] S = Console.ReadLine().Split(new[] { ' ', '\n' }, StringSplitOptions.RemoveEmptyEntries);
Alt dize sınırlayıcıları kullanmanız gerekirse:
string[] S = Console.ReadLine().Split(new[] { "\\r\\n", "\r", "\n", "" }, StringSplitOptions.RemoveEmptyEntries);

Dizeler "+" işareti kullanılarak birbirine eklenebilir. Bu işleme dize birleştirme veya birleştirme denir. 
Örneğin, 
dize s = "Merhaba,";
dizi s1 = "dünya";
Console.WriteLine(s + s1);
Ekranda "Merhaba dünya" (tırnak işaretleri olmadan).
 

Satır dizinlerine başvurma
Bir dizedeki her karakterin bir numarası vardır (dizin olarak adlandırılır) ve C# programlama dilinde dizin oluşturma sıfırdan başlar. Yani, ilk karakterin dizini 0, ikinci - 1 vb. Dize karakterlerine, köşeli parantezler s[i] içinde gösterilen dizinlerle erişilebilir.
 
Örnek 

Önemli!
i dizinindeki bir dize öğesine erişirken, s[i] türü string değil, char olur. Bu, bunun bir dize olmadığı, ancak karakter kodu tablosundaki bir tamsayıya karşılık gelen bir karakter olduğu anlamına gelir. Özellikle, char  türünde iki öğe eklediğinizde, bir tamsayı elde edersiniz - bu öğelerin kodlarının toplamı. Ancak, s[i] öğesini görüntülerseniz, dizenin i-inci karakteri görüntülenir, ona karşılık gelen sayı değil. 

Dize S H e l l o
Dizin S[0] S[1] S[2] S[3] S[4]
Bir karaktere dizinle erişilebildiğinden, tüm karakterleri yinelemek için bir değişken döngüsü kullanılabilir olası indeks değerlerini alacaktır. Örneğin, s dizisinin tüm karakter kodlarını görüntüleyen bir program şöyle görünür:
için (int i = 0; i < s.Length; i++)
{
  Console.WriteLine(s[i]);
    Console.WriteLine(Convert.ToInt32(s[i]));
}

Program notları:
1) s.Length bir dizgenin uzunluğunu bulur. İlk karakterin indeksi 0 ve son karakterin indeksi s.Length-1'dir. i döngü değişkeni, değerleri 0'dan 
s.Length-1;
2) her satırda önce sembolün kendisi, ardından  Convert.ToInt32();
yöntemiyle elde edilebilen kodu görüntülenecektir.
Aynı sıralama daha kısa yazılabilir:


foreach (s cinsinden karakter c)

    Console.WriteLine(c);
    Console.WriteLine(Convert.ToInt32(c));
}

Bu snippet'te, döngü başlığı tüm  ler boyunca döner c değişkenine birer birer yerleştirilen karakterler.
Dizelerle çalışırken C#'ın özelliği, dizelerin değişmez nesneler olmasıdır. Başka bir deyişle, bir dizgenin karakterlerini tek tek değiştiremeyiz.
Örneğin, aşağıdaki ifade çalışmaz:
s[5]=" ";