Aracılığıyla paylaş


Dizeler ve dize sabitleri

Dize, değeri metin olan türünde String bir nesnedir. Dahili olarak, metin nesnelerin sıralı salt okunur koleksiyonu Char olarak depolanır. Dizenin Length özelliği, Unicode karakter sayısını Char değil içerdiği nesne sayısını temsil eder. Bir dizedeki tek tek Unicode kod noktalarına erişmek için nesnesini kullanın StringInfo .

string ve System.String kıyaslaması

C# dilinde string anahtar kelimesi String için bir diğer addır; bu nedenle String ve string eşdeğerdir. Sağlanan diğer adı string, using System; olmadan da çalıştığı için kullanın. String sınıfı, dizeleri güvenli bir şekilde oluşturmak, işlemek ve karşılaştırmak için birçok yöntem sağlar. Ayrıca, C# dili yaygın dize işlemlerini basitleştirmek için bazı işleçleri aşırı yükler. Anahtar sözcük hakkında daha fazla bilgi için bkz. dize. Türü ve yöntemleri hakkında daha fazla bilgi için bkz String. .

Dizeleri tanımlama ve başlatma

Aşağıdaki örnekte gösterildiği gibi dizeleri çeşitli yollarla bildirebilir ve başlatabilirsiniz:

// Declare without initializing.
string message1;

// Initialize to null.
string? message2 = null;

// Initialize as an empty string.
// Use the Empty constant instead of the literal "".
string message3 = System.String.Empty;

// Initialize with a regular string literal.
string oldPath = "c:\\Program Files\\Microsoft Visual Studio 8.0";

// Initialize with a verbatim string literal.
string newPath = @"c:\Program Files\Microsoft Visual Studio 9.0";

// Use System.String if you prefer.
System.String greeting = "Hello World!";

// In local variables (i.e. within a method body)
// you can use implicit typing.
var temp = "I'm still a strongly-typed System.String!";

// Use a const string to prevent 'message4' from
// being used to store another string value.
const string message4 = "You can't get rid of me!";

// Use the String constructor only when creating
// a string from a char*, char[], or sbyte*. See
// System.String documentation for details.
char[] letters = { 'A', 'B', 'C' };
string alphabet = new string(letters);

Dizeyi bir karakter dizisiyle başlatma dışında bir dize nesnesi oluşturmak için yeni işlecini kullanmazsınız.

Dizesi sıfır uzunlukta olan yeni Empty bir nesne oluşturmak için sabit değerle String bir dize başlatın. Sıfır uzunluğunda bir karakter dizisinin karakter dizesi gösterimi "". Dizeleri Empty yerine değeri ile başlatarak, bir NullReferenceException gerçekleşme olasılığını azaltabilirsiniz. Erişmeye çalışmadan önce bir dizenin değerini doğrulamak için statik IsNullOrEmpty(String) yöntemini kullanın.

Dizelerin değişmezliği

Dize nesneleri sabittir: oluşturulduktan sonra değiştirilemezler. Bir dizeyi String değiştirmek için görünen tüm yöntemler ve C# işleçleri, sonuçları aslında yeni bir dize nesnesinde döndürür. Aşağıdaki örnekte, s1 ve s2 içindekiler tek bir dize oluşturacak şekilde birleştirildiğinde, iki özgün dize değiştirilmez. işleci, += birleştirilmiş içerikleri içeren yeni bir dize oluşturur. Bu yeni nesne s1 değişkenine atanır ve s1'e atanan özgün nesne, başka hiçbir değişkenin ona referans tutmaması nedeniyle, çöp toplama için serbest bırakılır.

string s1 = "A string is more ";
string s2 = "than the sum of its chars.";

// Concatenate s1 and s2. This actually creates a new
// string object and stores it in s1, releasing the
// reference to the original object.
s1 += s2;

System.Console.WriteLine(s1);
// Output: A string is more than the sum of its chars.

Dize "değişikliği" aslında yeni bir dize oluşturma olduğundan, dizelere başvuru oluştururken dikkatli olmanız gerekir. Bir dizeye başvuru oluşturur ve ardından özgün dizeyi "değiştirirseniz", başvuru özgün nesneye işaret etmeye devam eder. Özgün nesne, dize değiştirildiğinde oluşturulan yeni nesneyi yansıtmaz. Aşağıdaki kod bu davranışı gösterir:

string str1 = "Hello ";
string str2 = str1;
str1 += "World";

System.Console.WriteLine(str2);
//Output: Hello

Özgün dizede arama ve değiştirme işlemleri gibi değişiklikleri temel alan yeni dizeler oluşturma hakkında daha fazla bilgi için bkz. Dize içeriğini değiştirme.

Tırnak içine alınmış değişmez dize değerleri

Tırnak içine alınmış dize değişmezi, aynı satırda çift tırnak işaretiyle (") başlar ve biter. Alıntılanan dize değişmez değerleri, tek bir satıra sığan ve kaçış dizisi içermeyen dizeler için en uygun seçenektir. Tırnak içine alınmış bir dize değişmez değeri, aşağıdaki örnekte gösterildiği gibi kaçış karakterleri içermelidir.

string columns = "Column 1\tColumn 2\tColumn 3";
//Output: Column 1        Column 2        Column 3

string rows = "Row 1\r\nRow 2\r\nRow 3";
/* Output:
    Row 1
    Row 2
    Row 3
*/

string title = "\"The \u00C6olean Harp\", by Samuel Taylor Coleridge";
//Output: "The Æolean Harp", by Samuel Taylor Coleridge

Tam metin dizesi sabitleri

Düz metin dize değişmez değerleri , çok satırlı dizeler, ters eğik çizgi karakterleri içeren dizeler veya katıştırılmış çift tırnak işaretleri için daha kullanışlıdır. Düz metin dizeleri, dize metninin bir parçası olarak yeni satır karakterlerini korur. Düz metin dizesinin içine tırnak işareti eklemek için çift tırnak işareti kullanın. Aşağıdaki örnekte, ayrıntılı dizeler için bazı yaygın kullanımlar gösterilmektedir:

string title = "\"The \u00C6olean Harp\", by Samuel Taylor Coleridge";
//Output: "The Æolean Harp", by Samuel Taylor Coleridge

string filePath = @"C:\Users\scoleridge\Documents\";
//Output: C:\Users\scoleridge\Documents\

string text = @"My pensive SARA ! thy soft cheek reclined
    Thus on mine arm, most soothing sweet it is
    To sit beside our Cot,...";
/* Output:
My pensive SARA ! thy soft cheek reclined
    Thus on mine arm, most soothing sweet it is
    To sit beside our Cot,...
*/

string quote = @"Her name was ""Sara.""";
//Output: Her name was "Sara."

Ham dize değişmezleri

Ham dize değişmez değerlerini kullanarak çok satırlı dizeleri daha kolay oluşturabilir veya kaçış dizileri gerektiren karakterleri kullanabilirsiniz. Ham dize değişmez değerleri , kaçış dizilerini kullanma gereksinimini ortadan kaldırır. Dizeyi, boşluk biçimlendirmesi ve çıktıda görünmesini istediğiniz şekilde yazabilirsiniz. Ham dize değişmez değeri:

  • En az üç çift tırnak karakteri (""" ) dizisiyle başlayıp biter. Üç (veya daha fazla) yinelenen tırnak karakteri içeren dize değişmez değerlerini desteklemek üzere sırayı başlatmak ve sonlandırmak için ardışık üçten fazla karakter kullanabilirsiniz.
  • Tek satırlı ham dize değişmez değerler, açma ve kapatma tırnak işareti karakterlerinin aynı satırda olmasını gerektirir.
  • Çok satırlı ham dize ifadeleri, açma ve kapatma tırnak işaretlerini başlı başına bir satırda gerektirir.
  • Çok satırlı ham dize değişmez değerlerinde, kapanış tırnaklarının solundaki tüm boşluklar ham dize değişmez değerlerinin tüm satırlarından kaldırılır.
  • Çok satırlı ham dize ifadelerinde, aynı satırdaki açılış tırnak işaretinden sonra gelen boşluk yoksayılır.
  • Çok satırlı ham dize değişmez değerlerinde, dize değişmez değerine yalnızca açılış tırnak işaretinden sonraki boşluk satırları eklenir.

Aşağıdaki örneklerde bu kurallar gösterilmektedir:

string singleLine = """Friends say "hello" as they pass by.""";
string multiLine = """
    "Hello World!" is typically the first program someone writes.
    """;
string embeddedXML = """
       <element attr = "content">
           <body style="normal">
               Here is the main text
           </body>
           <footer>
               Excerpts from "An amazing story"
           </footer>
       </element >
       """;
// The line "<element attr = "content">" starts in the first column.
// All whitespace left of that column is removed from the string.

string rawStringLiteralDelimiter = """"
    Raw string literals are delimited 
    by a string of at least three double quotes,
    like this: """
    """";

Aşağıdaki örneklerde, bu kurallara göre bildirilen derleyici hataları gösterilmektedir:

// CS8997: Unterminated raw string literal.
var multiLineStart = """This
    is the beginning of a string 
    """;

// CS9000: Raw string literal delimiter must be on its own line.
var multiLineEnd = """
    This is the beginning of a string """;

// CS8999: Line does not start with the same whitespace as the closing line
// of the raw string literal
var noOutdenting = """
    A line of text.
Trying to outdent the second line.
    """;

Çok satırlı ham metin dizeleri, açılış ve kapanış tırnak işaretlerinin ayrı bir satırda olmasını gerektirdiğinden, ilk iki örnek geçersizdir. Üçüncü örnek geçersiz çünkü metin kapanış tırnak işareti dizisinden dışa doğru taşınmış.

Metin oluştururken, tırnak içinde dize değişmez değerleri veya düz metin dize değişmez değerleri kullanıldığında kaçış dizileri gerektiren karakterler içeren durumlarda ham dize değişmez değerlerini dikkate almalısınız. Ham dize sabitleri sizin ve başkalarının okuması daha kolaydır çünkü çıkış metniyle daha yakından benzeşir. Örneğin, biçimlendirilmiş JSON dizesi içeren aşağıdaki kodu göz önünde bulundurun:

string jsonString = """
{
  "Date": "2019-08-01T00:00:00-07:00",
  "TemperatureCelsius": 25,
  "Summary": "Hot",
  "DatesAvailable": [
    "2019-08-01T00:00:00-07:00",
    "2019-08-02T00:00:00-07:00"
  ],
  "TemperatureRanges": {
    "Cold": {
      "High": 20,
      "Low": -10
    },
    "Hot": {
      "High": 60,
      "Low": 20
    }
            },
  "SummaryWords": [
    "Cool",
    "Windy",
    "Humid"
  ]
}
""";

Tavsiye

Visual Studio ve C# Dev Kit, ham dize sabitleri JSON verileri veya normal ifadeler içerdiğinde bazı doğrulama ve söz dizimi renklendirmesi sağlar.

Araçlar metni ayrıştırır. Araçlarda metnin JSON veya normal ifadeyi temsil ettiği konusunda güven varsa, düzenleyici söz dizimi renklendirmesi sağlar.

Bildirimin üzerine biçimi belirten bir açıklama ekleyerek bu deneyimi geliştirebilirsiniz:

  • // lang=json ham dize literalinin JSON verilerini temsil ettiğini belirtir.
  • // lang=regex ham dize sabiti bir düzenli ifadeyi temsil eder.

Bir ham dize değişmez değeri, parametrenin biçimini belirtmek için System.Diagnostics.CodeAnalysis.StringSyntaxAttribute öğesini kullandığı bir bağımsız değişken olarak kullanıldığında, bu araçlar belirli biçim türleri için ham dize değişmez değerini doğrular. Hem JSON hem de regex desteklenir.

Bazı biçimler için açıklama veya öznitelik, biçime uygun şekilde dize sabitleri üzerinde düzeltmeler sunan kod önerileri sağlar.

Dize kaçış dizileri

Kaçış dizisi Karakter adı Unicode kodlama
\' Tek tırnak 0x0027
\" Çift tırnak 0x0022
\\ Ters eğik çizgi 0x005C
\0 Sıfır 0x0000
\a Uyarı 0x0007
\b Geri tuşu 0x0008
\e Kaçmak 0x001B
\f Form akışı 0x000C
\n Yeni satır 0x000A
\r Satır başı dönüşü 0x000D
\t Yatay sekme 0x0009
\v Dikey sekme 0x000B
\u Unicode kaçış dizisi (UTF-16) \uHHHH (aralık: 0000 - FFFF; örnek: \u00E7 = "ç")
\U Unicode kaçış dizisi (UTF-32) \U00HHHHHH (aralık: 000000 - 10FFFF; örnek: \U0001F47D = "👽")
\x Değişken uzunluğu dışında "\u" ile benzer Unicode kaçış dizisi \xH[H][H][H] (aralık: 0 - FFFF; örnek: \x00E7 veya \x0E7\xE7 = "ç")

Uyarı

Kaçış dizisini \x kullandığınızda ve 4 onaltılık basamaktan azını belirttiğinizde, kaçış dizisini hemen izleyen karakterler geçerli onaltılık basamaklarsa (0-9, A-F ve a-f gibi), bunlar kaçış dizisinin bir parçası olarak yorumlanır. Örneğin, \xA1 "¡", U+00A1 kod noktası olan karakteri üretir. Ancak, sonraki karakter "A" veya "a" ise, kaçış dizisi bunun yerine" olarak \xA1A yorumlanır ve "ਚ" (U+0A1A kod noktası) oluşturur. Bu gibi durumlarda, 4 onaltılık basamakların tümünün (örneğin, \x00A1) belirtilmesi olası yanlış yorumlamayı önler.

Uyarı

Derleme zamanında, ayrıntılı ve ham dizeler tüm aynı kaçış dizilerine sahip sıradan dizelere dönüştürülür. Bu nedenle, hata ayıklayıcısının izleme penceresinde bir verbatim veya ham dizeyi görüntülerseniz, kaynak kodunuzdaki verbatim veya ham sürümü değil, derleyici tarafından eklenen kaçış karakterlerini görürsünüz. Örneğin, tam metin dizesi @"C:\files.txt", izleme penceresinde "C:\\files.txt" olarak görünür.

Dizeleri biçimlendirme

Biçim dizesi, çalışma zamanında içeriği dinamik olarak belirlenen bir dizedir. Biçim dizeleri, bir dize içindeki ayraçların içine ilişkilendirilmiş ifadeler veya yer tutucular eklenerek oluşturulur. Küme ayraçlarının ({...}) içindeki her şey çalışma zamanında bir değere çözülür ve biçimlendirilmiş bir dize olarak çıktı olarak üretilir. Biçim dizeleri oluşturmak için iki yöntem vardır: dize ilişkilendirme ve bileşik biçimlendirme.

Dize enterpolasyonu

İlişkili dizeleri özel karakterle $ bildirirsiniz. İlişkili dize, küme ayraçlarında ilişkilendirilmiş ifadeler içerir. Dize ilişkilendirmeyi yeni kullanıyorsanız, çeşitli örnekler için Dize ilişkilendirme - C# öğreticisine bakın.

Kodunuzun okunabilirliğini ve sürdürülebilirliğini geliştirmek için dize ilişkilendirmesini kullanın. Dize ilişkilendirme yöntemiyle aynı sonuçları String.Format elde eder, ancak kullanılması daha kolaydır ve satır içi netliği artırır.

var jh = (firstName: "Jupiter", lastName: "Hammon", born: 1711, published: 1761);
Console.WriteLine($"{jh.firstName} {jh.lastName} was an African American poet born in {jh.born}.");
Console.WriteLine($"He was first published in {jh.published} at the age of {jh.published - jh.born}.");
Console.WriteLine($"He'd be over {Math.Round((2018d - jh.born) / 100d) * 100d} years old today.");

// Output:
// Jupiter Hammon was an African American poet born in 1711.
// He was first published in 1761 at the age of 50.
// He'd be over 300 years old today.

Yer tutucular için kullanılan tüm ifadeler de sabit dizeler olduğunda, sabit bir dize başlatmak için dize ilişkilendirmesini kullanabilirsiniz.

Ham dizeleri dize interpolasyonlarıyla birleştirebilirsiniz. Biçim dizesini üç veya daha fazla ardışık çift tırnakla başlatır ve sonlarsınız. Çıkış dizeniz { veya } karakterini içermeliyse, bir ilişkilendirmenin başlangıç ve bitişini belirleyen $ ve { karakterlerinin sayısını belirtmek için ekstra } karakterler kullanabilirsiniz. Daha az { veya } karakter içeren herhangi bir dizi çıkışa eklenir. Aşağıdaki örnekte, bir noktanın kaynaktan uzaklığı görüntülemek ve noktayı küme ayraçlarının içine yerleştirmek için bu özelliği nasıl kullanabileceğiniz gösterilmektedir:

int X = 2;
int Y = 3;

var pointMessage = $$"""The point {{{X}}, {{Y}}} is {{Math.Sqrt(X * X + Y * Y)}} from the origin.""";

Console.WriteLine(pointMessage);
// Output:
// The point {2, 3} is 3.605551275463989 from the origin.

Ayrıntılı dize ilişkilendirmesi

C# ayrıca, örneğin birden çok satırda ayrıntılı dize ilişkilendirmesi yapmayı $@ veya @$ söz dizimini kullanarak sağlar.

Kaçış dizilerini kelime anlamında yorumlamak için verbatim dize değişmezini kullanın. İliştirilen düzgün metin dizisi, $ karakteri ile başlayıp @ karakteri ile devam eder. $ ve @ belirteçlerini herhangi bir sırada kullanabilirsiniz: hem $@"..." hem de @$"..." geçerli ilişkilendirilmiş düz metin dizeleridir.

var jh = (firstName: "Jupiter", lastName: "Hammon", born: 1711, published: 1761);
Console.WriteLine($@"{jh.firstName} {jh.lastName}
    was an African American poet born in {jh.born}.");
Console.WriteLine(@$"He was first published in {jh.published}
at the age of {jh.published - jh.born}.");

// Output:
// Jupiter Hammon
//     was an African American poet born in 1711.
// He was first published in 1761
// at the age of 50.

Bileşik biçimlendirme

String.Format biçim dizesi oluşturmak için küme ayraçlarındaki yer tutucuları kullanır. Bu örnek, önceki örnekte kullanılan dize ilişkilendirme yöntemine benzer bir çıkışla sonuç verir.

var pw = (firstName: "Phillis", lastName: "Wheatley", born: 1753, published: 1773);
Console.WriteLine("{0} {1} was an African American poet born in {2}.", pw.firstName, pw.lastName, pw.born);
Console.WriteLine("She was first published in {0} at the age of {1}.", pw.published, pw.published - pw.born);
Console.WriteLine("She'd be over {0} years old today.", Math.Round((2018d - pw.born) / 100d) * 100d);

// Output:
// Phillis Wheatley was an African American poet born in 1753.
// She was first published in 1773 at the age of 20.
// She'd be over 300 years old today.

Daha fazla bilgi için bkz. .NET'te bileşik biçimlendirme.

Alt Dizeler

Alt dize, dizede yer alan herhangi bir karakter dizisidir. Substring yöntemini kullanarak özgün dizenin bir bölümünden yeni bir dize oluşturun. yöntemini kullanarak bir alt dizenin bir veya daha fazla örneğini IndexOf arayabilirsiniz. Belirtilen alt dizenin Replace tüm oluşumlarını yeni bir dizeyle değiştirmek için yöntemini kullanın. Substring yöntemi gibi, Replace aslında yeni bir dize döndürür ve özgün dizeyi değiştirmez. Daha fazla bilgi için bkz. Dizeleri arama ve Dize içeriğini değiştirme.

string s3 = "Visual C# Express";
System.Console.WriteLine(s3.Substring(7, 2));
// Output: "C#"

System.Console.WriteLine(s3.Replace("C#", "Basic"));
// Output: "Visual Basic Express"

// Index values are zero-based
int index = s3.IndexOf("C");
// index = 7

Tek tek karakterlere erişme

Aşağıdaki örnekte olduğu gibi, tek tek karakterlere salt okunur erişim elde etmek için dizin değeriyle dizi gösterimi kullanabilirsiniz:

string s5 = "Printing backwards";

for (int i = 0; i < s5.Length; i++)
{
    System.Console.Write(s5[s5.Length - i - 1]);
}
// Output: "sdrawkcab gnitnirP"

Daha kapsamlı dize işlemesi için tek tek karakterleri "yerinde" değiştirmek için bir StringBuilder nesnesi kullanabilirsiniz. Ardından, yöntemleri kullanarak StringBuilder sonuçları depolamak için yeni bir dize oluşturun. Aşağıdaki örnekte, özgün dizeyi belirli bir şekilde değiştirmeniz ve ardından sonuçları gelecekte kullanmak üzere depolamanız gerektiğini varsayalım:

string question = "hOW DOES mICROSOFT wORD DEAL WITH THE cAPS lOCK KEY?";
System.Text.StringBuilder sb = new System.Text.StringBuilder(question);

for (int j = 0; j < sb.Length; j++)
{
    if (System.Char.IsLower(sb[j]) == true)
        sb[j] = System.Char.ToUpper(sb[j]);
    else if (System.Char.IsUpper(sb[j]) == true)
        sb[j] = System.Char.ToLower(sb[j]);
}
// Store the new string.
string corrected = sb.ToString();
System.Console.WriteLine(corrected);
// Output: How does Microsoft Word deal with the Caps Lock key?

Dizinler hakkında daha fazla bilgi için Dizinleri ve aralıkları keşfetme makalesine bakın.

Null stringler ve boş stringler

Boş dize, sıfır karakter içeren bir System.String nesne örneğidir. Boş dizeler genellikle çeşitli programlama senaryolarında boş bir metin alanını temsil etmek için kullanılır. Boş dizeler geçerli System.String nesneler olduğundan yöntemleri çağırabilirsiniz. Boş dizeler aşağıdaki gibi başlatılır:

string s = String.Empty;

Buna karşılık, null dize bir System.String nesnesinin örneğine referans vermez ve null dize üzerinde bir yöntem çağırma girişimi bir NullReferenceException neden olur. Ancak, diğer dizelerle birleştirme ve karşılaştırma işlemlerinde null dizeler kullanabilirsiniz. Aşağıdaki örnekler, null dizeye başvurunun bazı durumlarda özel durum oluşturduğu, bazılarında ise oluşturmadığı durumları göstermektedir.

string str = "hello";
string? nullStr = null;
string emptyStr = String.Empty;

string tempStr = str + nullStr;
// Output of the following line: hello
Console.WriteLine(tempStr);

bool b = (emptyStr == nullStr);
// Output of the following line: False
Console.WriteLine(b);

// The following line creates a new empty string.
string newStr = emptyStr + nullStr;

// Null strings and empty strings behave differently. The following
// two lines display 0.
Console.WriteLine(emptyStr.Length);
Console.WriteLine(newStr.Length);
// The following line raises a NullReferenceException.
//Console.WriteLine(nullStr.Length);

// The null character can be displayed and counted, like other chars.
string s1 = "\x0" + "abc";
string s2 = "abc" + "\x0";
// Output of the following line: * abc*
Console.WriteLine("*" + s1 + "*");
// Output of the following line: *abc *
Console.WriteLine("*" + s2 + "*");
// Output of the following line: 4
Console.WriteLine(s2.Length);

Hızlı dize oluşturma için StringBuilder kullanma

.NET'teki dize işlemleri yüksek oranda iyileştirilmiştir ve çoğu durumda performansı önemli ölçüde etkilemez. Ancak, yüzlerce veya binlerce kez yürütülen sıkı döngüler gibi bazı senaryolarda dize işlemleri performansı etkileyebilir. sınıfı, StringBuilder programınız birçok dize işlemesi gerçekleştirirse daha iyi performans sunan bir dize arabelleği oluşturur. Dize StringBuilder , yerleşik dize veri türünün desteklemediği tek tek karakterleri yeniden atamanıza da olanak tanır. Örneğin bu kod, yeni bir dize oluşturmadan bir dizenin içeriğini değiştirir:

System.Text.StringBuilder sb = new System.Text.StringBuilder("Rat: the ideal pet");
sb[0] = 'C';
System.Console.WriteLine(sb.ToString());
//Outputs Cat: the ideal pet

Bu örnekte, bir StringBuilder nesnesi, çeşitli sayısal türlerden metin oluşturmak için kullanılır.

var sb = new StringBuilder();

// Create a string composed of numbers 0 - 9
for (int i = 0; i < 10; i++)
{
    sb.Append(i.ToString());
}
Console.WriteLine(sb);  // displays 0123456789

// Copy one character of the string (not possible with a System.String)
sb[0] = sb[9];

Console.WriteLine(sb);  // displays 9123456789

Dizeler, uzantı yöntemleri ve LINQ

String türü IEnumerable<T> uyguladığından, metinlerde Enumerable sınıfında tanımlanan uzantı yöntemlerini kullanabilirsiniz. Görsel dağınıklığı önlemek için bu yöntemler türü için String IntelliSense'in dışında tutulur, ancak yine de kullanılabilir. Dizelerde LINQ sorgu ifadelerini de kullanabilirsiniz. Daha fazla bilgi için bkz. LINQ ve Strings.