String Osztály

Definíció

A szöveget UTF-16 kódegységek sorozataként jelöli.

public ref class System::String sealed : IComparable, IComparable<System::String ^>, IConvertible, IEquatable<System::String ^>, System::Collections::Generic::IEnumerable<char>
public ref class System::String sealed : ICloneable, IComparable, IComparable<System::String ^>, IConvertible, IEquatable<System::String ^>, IParsable<System::String ^>, ISpanParsable<System::String ^>, System::Collections::Generic::IEnumerable<char>
public ref class System::String sealed : ICloneable, IComparable, IComparable<System::String ^>, IConvertible, IEquatable<System::String ^>, System::Collections::Generic::IEnumerable<char>
public ref class System::String sealed : ICloneable, IComparable, IConvertible, System::Collections::IEnumerable
public ref class System::String sealed : IComparable, IComparable<System::String ^>, IEquatable<System::String ^>, System::Collections::IEnumerable
public ref class System::String sealed : IComparable, IComparable<System::String ^>, IEquatable<System::String ^>, System::Collections::Generic::IEnumerable<char>
public sealed class String : IComparable, IComparable<string>, IConvertible, IEquatable<string>, System.Collections.Generic.IEnumerable<char>
public sealed class String : ICloneable, IComparable, IComparable<string>, IConvertible, IEquatable<string>, IParsable<string>, ISpanParsable<string>, System.Collections.Generic.IEnumerable<char>
public sealed class String : ICloneable, IComparable, IComparable<string>, IConvertible, IEquatable<string>, System.Collections.Generic.IEnumerable<char>
[System.Serializable]
public sealed class String : ICloneable, IComparable, IConvertible, System.Collections.IEnumerable
[System.Serializable]
[System.Runtime.InteropServices.ComVisible(true)]
public sealed class String : ICloneable, IComparable, IComparable<string>, IConvertible, IEquatable<string>, System.Collections.Generic.IEnumerable<char>
public sealed class String : IComparable, IComparable<string>, IEquatable<string>, System.Collections.IEnumerable
public sealed class String : IComparable, IComparable<string>, IEquatable<string>, System.Collections.Generic.IEnumerable<char>
type string = class
    interface seq<char>
    interface IEnumerable
    interface IComparable
    interface IComparable<string>
    interface IConvertible
    interface IEquatable<string>
type string = class
    interface seq<char>
    interface IEnumerable
    interface ICloneable
    interface IComparable
    interface IComparable<string>
    interface IConvertible
    interface IEquatable<string>
    interface IParsable<string>
    interface ISpanParsable<string>
type string = class
    interface seq<char>
    interface IEnumerable
    interface ICloneable
    interface IComparable
    interface IComparable<string>
    interface IConvertible
    interface IEquatable<string>
type string = class
    interface seq<char>
    interface IEnumerable
    interface IComparable
    interface IComparable<string>
    interface IConvertible
    interface IEquatable<string>
    interface ICloneable
[<System.Serializable>]
type string = class
    interface IComparable
    interface ICloneable
    interface IConvertible
    interface IEnumerable
[<System.Serializable>]
[<System.Runtime.InteropServices.ComVisible(true)>]
type string = class
    interface IComparable
    interface ICloneable
    interface IConvertible
    interface IComparable<string>
    interface seq<char>
    interface IEnumerable
    interface IEquatable<string>
[<System.Serializable>]
[<System.Runtime.InteropServices.ComVisible(true)>]
type string = class
    interface IComparable
    interface ICloneable
    interface IConvertible
    interface IEnumerable
    interface IComparable<string>
    interface seq<char>
    interface IEquatable<string>
type string = class
    interface IEnumerable
    interface IComparable
    interface IComparable<string>
    interface IEquatable<string>
type string = class
    interface IComparable
    interface IComparable<string>
    interface IEquatable<string>
    interface seq<char>
    interface IEnumerable
Public NotInheritable Class String
Implements IComparable, IComparable(Of String), IConvertible, IEnumerable(Of Char), IEquatable(Of String)
Public NotInheritable Class String
Implements ICloneable, IComparable, IComparable(Of String), IConvertible, IEnumerable(Of Char), IEquatable(Of String), IParsable(Of String), ISpanParsable(Of String)
Public NotInheritable Class String
Implements ICloneable, IComparable, IComparable(Of String), IConvertible, IEnumerable(Of Char), IEquatable(Of String)
Public NotInheritable Class String
Implements ICloneable, IComparable, IConvertible, IEnumerable
Public NotInheritable Class String
Implements IComparable, IComparable(Of String), IEnumerable, IEquatable(Of String)
Public NotInheritable Class String
Implements IComparable, IComparable(Of String), IEnumerable(Of Char), IEquatable(Of String)
Öröklődés
String
Attribútumok
Megvalósítás

Megjegyzések

A sztring a szöveg ábrázolására használt karakterek szekvenciális gyűjteménye. Az String objektum egy sztringet képviselő objektumok szekvenciális gyűjteménye System.Char ; az System.Char objektum egy UTF-16 kódegységnek felel meg. Az String objektum értéke a System.Char objektumok szekvenciális gyűjteményének tartalma, és ez az érték változtathatatlan (azaz írásvédett). A sztringek nem módosíthatóságával kapcsolatos további információkért tekintse meg az Immutability és a StringBuilder osztály szakaszt. A memóriában lévő objektumok maximális mérete String 2 GB vagy körülbelül 1 milliárd karakter.

További információ a Unicode-ról, az UTF-16-ról, a kódegységekről, a kódpontokról és a CharRune típusokról: Bevezetés a karakterkódolásba a .NET-ben.

Sztringobjektum példányosítása

Egy String objektumot a következő módokon lehet példányosítani:

  • Sztringkonstans változóhoz String rendelésével. Ez a sztringek létrehozásához leggyakrabban használt módszer. Az alábbi példa hozzárendeléssel hoz létre több sztringet. Vegye figyelembe, hogy c# és F# nyelven, mivel a fordított perjel (\) egy feloldó karakter, a sztringben lévő literális fordított perjeleket meg kell szökni, vagy a teljes sztringet @-idézőjellel kell megadni.

    string string1 = "This is a string created by assignment.";
    Console.WriteLine(string1);
    string string2a = "The path is C:\\PublicDocuments\\Report1.doc";
    Console.WriteLine(string2a);
    string string2b = @"The path is C:\PublicDocuments\Report1.doc";
    Console.WriteLine(string2b);
    // The example displays the following output:
    //       This is a string created by assignment.
    //       The path is C:\PublicDocuments\Report1.doc
    //       The path is C:\PublicDocuments\Report1.doc
    
    let string1 = "This is a string created by assignment."
    printfn "%s" string1
    let string2a = "The path is C:\\PublicDocuments\\Report1.doc"
    printfn "%s" string2a
    let string2b = @"The path is C:\PublicDocuments\Report1.doc"
    printfn "%s" string2b
    // The example displays the following output:
    //       This is a string created by assignment.
    //       The path is C:\PublicDocuments\Report1.doc
    //       The path is C:\PublicDocuments\Report1.doc
    
    Dim string1 As String = "This is a string created by assignment."
    Console.WriteLine(string1)
    Dim string2 As String = "The path is C:\PublicDocuments\Report1.doc"
    Console.WriteLine(string2)
    ' The example displays the following output:
    '       This is a string created by assignment.
    '       The path is C:\PublicDocuments\Report1.doc
    
  • Az String osztálykonstruktor meghívásával. Az alábbi példa több osztálykonstruktor meghívásával példányosítja a sztringeket. Vegye figyelembe, hogy egyes konstruktorok paraméterként karaktertömbökre mutató vagy aláírt bájttömböket tartalmaznak. A Visual Basic nem támogatja a konstruktorokhoz intézett hívásokat. A konstruktorokkal kapcsolatos String részletes információkért tekintse meg a konstruktor-összegzést String.

    char[] chars = { 'w', 'o', 'r', 'd' };
    sbyte[] bytes = { 0x41, 0x42, 0x43, 0x44, 0x45, 0x00 };
    
    // Create a string from a character array.
    string string1 = new string(chars);
    Console.WriteLine(string1);
    
    // Create a string that consists of a character repeated 20 times.
    string string2 = new string('c', 20);
    Console.WriteLine(string2);
    
    string stringFromBytes = null;
    string stringFromChars = null;
    unsafe
    {
       fixed (sbyte* pbytes = bytes)
       {
          // Create a string from a pointer to a signed byte array.
          stringFromBytes = new string(pbytes);
       }
       fixed (char* pchars = chars)
       {
          // Create a string from a pointer to a character array.
          stringFromChars = new string(pchars);
       }
    }
    Console.WriteLine(stringFromBytes);
    Console.WriteLine(stringFromChars);
    // The example displays the following output:
    //       word
    //       cccccccccccccccccccc
    //       ABCDE
    //       word
    
    let chars = [| 'w'; 'o'; 'r'; 'd' |]
    let bytes = [| 0x41y; 0x42y; 0x43y; 0x44y; 0x45y; 0x00y |]
    
    // Create a string from a character array.
    let string1 = String chars
    printfn "%s" string1
    
    // Create a string that consists of a character repeated 20 times.
    let string2 = String('c', 20)
    printfn "%s" string2
    
    let stringFromBytes =
        // Create a string from a pointer to a signed byte array.
        use pbytes = fixed bytes
        String pbytes
    let stringFromChars = 
        // Create a string from a pointer to a character array.
        use pchars = fixed chars
        String pchars
    
    printfn $"{stringFromBytes}"
    printfn $"{stringFromChars}"
    // The example displays the following output:
    //       word
    //       cccccccccccccccccccc
    //       ABCDE
    //       word
    
    Dim chars() As Char = {"w"c, "o"c, "r"c, "d"c}
    
    ' Create a string from a character array.
    Dim string1 As New String(chars)
    Console.WriteLine(string1)
    
    ' Create a string that consists of a character repeated 20 times.
    Dim string2 As New String("c"c, 20)
    Console.WriteLine(string2)
    ' The example displays the following output:
    '       word
    '       cccccccccccccccccccc
    
  • A sztringösszefűzési operátorral (C# és F# esetében +, illetve Visual Basicben & vagy +) egyetlen sztringet hozhat létre a példányok és a sztringkonstansok tetszőleges kombinációjából. Az alábbi példa a sztringösszefűzési operátor használatát mutatja be.

    string string1 = "Today is " + DateTime.Now.ToString("D") + ".";
    Console.WriteLine(string1);
    
    string string2 = "This is one sentence. " + "This is a second. ";
    string2 += "This is a third sentence.";
    Console.WriteLine(string2);
    // The example displays output like the following:
    //    Today is Tuesday, July 06, 2011.
    //    This is one sentence. This is a second. This is a third sentence.
    
    let string1 = "Today is " + DateTime.Now.ToString("D") + "."
    printfn $"{string1}"
    
    let string2 = "This is one sentence. " + "This is a second. "
    let string2 = string2 + "This is a third sentence."
    printfn $"{string2}"
    // The example displays output like the following:
    //    Today is Tuesday, July 06, 2011.
    //    This is one sentence. This is a second. This is a third sentence.
    
    Dim string1 As String = "Today is " + Date.Now.ToString("D") + "."
    Console.WriteLine(string1)
    Dim string2 As String = "This is one sentence. " + "This is a second. "
    string2 += "This is a third sentence."
    Console.WriteLine(string2)
    ' The example displays output like the following:
    '    Today is Tuesday, July 06, 2011.
    '    This is one sentence. This is a second. This is a third sentence.
    
  • Egy tulajdonság beolvasásával vagy egy sztringet visszaadó metódus meghívásával. Az alábbi példa a String osztály metódusaival nyer ki egy részsztringet egy nagyobb sztringből.

    string sentence = "This sentence has five words.";
    // Extract the second word.
    int startPosition = sentence.IndexOf(" ") + 1;
    string word2 = sentence.Substring(startPosition,
                                      sentence.IndexOf(" ", startPosition) - startPosition);
    Console.WriteLine("Second word: " + word2);
    // The example displays the following output:
    //       Second word: sentence
    
    let sentence = "This sentence has five words."
    // Extract the second word.
    let startPosition = sentence.IndexOf " " + 1
    let word2 = 
        sentence.Substring(startPosition, sentence.IndexOf(" ", startPosition) - startPosition)
    printfn $"Second word: {word2}"
    // The example displays the following output:
    //       Second word: sentence
    
    Dim sentence As String = "This sentence has five words."
    ' Extract the second word.
    Dim startPosition As Integer = sentence.IndexOf(" ") + 1
    Dim word2 As String = sentence.Substring(startPosition,
                                           sentence.IndexOf(" ", startPosition) - startPosition)
    Console.WriteLine("Second word: " + word2)
    ' The example displays the following output:
    '       Second word: sentence
    
  • Egy érték vagy objektum sztring-ábrázolására szolgáló formázási metódus meghívásával. Az alábbi példa az összetett formázási funkcióval ágyazza be két objektum sztringbe való ábrázolását.

    DateTime dateAndTime = new DateTime(2011, 7, 6, 7, 32, 0);
    double temperature = 68.3;
    string result = String.Format("At {0:t} on {0:D}, the temperature was {1:F1} degrees Fahrenheit.",
                                  dateAndTime, temperature);
    Console.WriteLine(result);
    // The example displays the following output:
    //       At 7:32 AM on Wednesday, July 06, 2011, the temperature was 68.3 degrees Fahrenheit.
    
    let dateAndTime = DateTime(2011, 7, 6, 7, 32, 0)
    let temperature = 68.3
    String.Format("At {0:t} on {0:D}, the temperature was {1:F1} degrees Fahrenheit.", dateAndTime, temperature)
    |> printfn "%s"
    // The example displays the following output:
    //       At 7:32 AM on Wednesday, July 06, 2011, the temperature was 68.3 degrees Fahrenheit.
    
    Dim dateAndTime As DateTime = #07/06/2011 7:32:00AM#
    Dim temperature As Double = 68.3
    Dim result As String = String.Format("At {0:t} on {0:D}, the temperature was {1:F1} degrees Fahrenheit.",
                                       dateAndTime, temperature)
    Console.WriteLine(result)
    ' The example displays the following output:
    '       At 7:32 AM on Wednesday, July 06, 2011, the temperature was 68.3 degrees Fahrenheit.
    

Karakterobjektumok és Unicode-karakterek

A sztring minden karakterét Unicode skaláris érték határozza meg, más néven Unicode-kódpont vagy Unicode-karakter sorszámértéke (numerikus). Minden kódpont kódolása UTF-16 kódolással történik, a kódolás egyes elemeinek numerikus értékét pedig egy Char objektum jelöli.

Megjegyzés:

Vegye figyelembe, hogy mivel egy String példány UTF-16 kódegységek szekvenciális gyűjteményéből áll, létrehozhat egy String olyan objektumot, amely nem egy jól formázott Unicode-sztring. Létrehozhat például egy olyan sztringet, amely alacsony helyettessel rendelkezik, de nem rendelkezik megfelelő magas helyettessel. Bár egyes metódusok, például a névtérben lévő System.Text objektumok kódolásának és dekódolásának módjai, ellenőrzésekkel gondoskodhatnak arról, hogy a sztringek megfelelően formázva legyenek, String az osztálytagok nem biztosítják, hogy a sztringek megfelelően legyenek formázva.

Char Egy objektum általában egyetlen kódpontot jelöl, azaz a kódpont numerikus értéke Char egyenlő. Az "a" karakter kódpontja például U+0061. Egy kódponthoz azonban több kódolt elemre is szükség lehet (egynél Char több objektumra). A Unicode szabvány két karaktertípust határoz meg, amelyek több Char objektumnak felelnek meg: gráfok és Unicode kiegészítő kódpontok, amelyek a Unicode kiegészítő síkjaiban szereplő karaktereknek felelnek meg.

  • A gráfokat egy alap karakter jelöli, amelyet egy vagy több egyesítési karakter követ. Az ä karaktert például egy Char olyan objektum jelöli, amelynek kódpontja U+0061, majd egy Char olyan objektum, amelynek kódpontja U+0308. Ezt a karaktert egyetlen Char objektum is definiálhatja, amely U+00E4 kódponttal rendelkezik. Ahogy az alábbi példa is mutatja, az egyenlőség kultúraérzékeny összehasonlítása azt jelzi, hogy ez a két ábrázolás egyenlő, noha egy ordinális összehasonlítás nem. Ha azonban a két sztring normalizálva van, az ordinális összehasonlítás azt is jelzi, hogy egyenlőek. (További információ a sztringek normalizálásáról: Normalizálási szakasz.)

    using System;
    using System.Globalization;
    using System.IO;
    
    public class Example
    {
       public static void Main()
       {
          StreamWriter sw = new StreamWriter(@".\graphemes.txt");
          string grapheme = "\u0061\u0308";
          sw.WriteLine(grapheme);
          
          string singleChar = "\u00e4";
          sw.WriteLine(singleChar);
                
          sw.WriteLine("{0} = {1} (Culture-sensitive): {2}", grapheme, singleChar, 
                       String.Equals(grapheme, singleChar, 
                                     StringComparison.CurrentCulture));
          sw.WriteLine("{0} = {1} (Ordinal): {2}", grapheme, singleChar, 
                       String.Equals(grapheme, singleChar, 
                                     StringComparison.Ordinal));
          sw.WriteLine("{0} = {1} (Normalized Ordinal): {2}", grapheme, singleChar, 
                       String.Equals(grapheme.Normalize(), 
                                     singleChar.Normalize(), 
                                     StringComparison.Ordinal));
          sw.Close(); 
       }
    }
    // The example produces the following output:
    //       ä
    //       ä
    //       ä = ä (Culture-sensitive): True
    //       ä = ä (Ordinal): False
    //       ä = ä (Normalized Ordinal): True
    
    open System
    open System.IO
    
    do
        use sw = new StreamWriter(@".\graphemes.txt")
        let grapheme = "\u0061\u0308"
        sw.WriteLine grapheme
    
        let singleChar = "\u00e4"
        sw.WriteLine singleChar
    
        sw.WriteLine("{0} = {1} (Culture-sensitive): {2}", grapheme, singleChar, 
                    String.Equals(grapheme, singleChar,
                                    StringComparison.CurrentCulture))
        sw.WriteLine("{0} = {1} (Ordinal): {2}", grapheme, singleChar,
                    String.Equals(grapheme, singleChar,
                                    StringComparison.Ordinal))
        sw.WriteLine("{0} = {1} (Normalized Ordinal): {2}", grapheme, singleChar,
                    String.Equals(grapheme.Normalize(),
                                    singleChar.Normalize(),
                                    StringComparison.Ordinal))
    // The example produces the following output:
    //       ä
    //       ä
    //       ä = ä (Culture-sensitive): True
    //       ä = ä (Ordinal): False
    //       ä = ä (Normalized Ordinal): True
    
    Imports System.Globalization
    Imports System.IO
    
    Module Example9
        Public Sub Main()
            Dim sw As New StreamWriter(".\graphemes.txt")
            Dim grapheme As String = ChrW(&H61) + ChrW(&H308)
            sw.WriteLine(grapheme)
    
            Dim singleChar As String = ChrW(&HE4)
            sw.WriteLine(singleChar)
    
            sw.WriteLine("{0} = {1} (Culture-sensitive): {2}", grapheme, singleChar,
                       String.Equals(grapheme, singleChar,
                                     StringComparison.CurrentCulture))
            sw.WriteLine("{0} = {1} (Ordinal): {2}", grapheme, singleChar,
                       String.Equals(grapheme, singleChar,
                                     StringComparison.Ordinal))
            sw.WriteLine("{0} = {1} (Normalized Ordinal): {2}", grapheme, singleChar,
                       String.Equals(grapheme.Normalize(),
                                     singleChar.Normalize(),
                                     StringComparison.Ordinal))
            sw.Close()
        End Sub
    End Module
    ' The example produces the following output:
    '       ä
    '       ä
    '       ä = ä (Culture-sensitive): True
    '       ä = ä (Ordinal): False
    '       ä = ä (Normalized Ordinal): True
    
  • A Unicode kiegészítő kódpontokat (helyettesítő párokat) egy Char olyan objektum jelöli, amelynek kódpontja egy magas helyettesítő, amelyet egy Char olyan objektum követ, amelynek a kódpontja alacsony helyettesítő. A magas helyettesítők kódegységei U+D800 és U+DBFF között mozognak. Az alacsony helyettesítők kódegységei U+DC00 és U+DFFF között mozognak. A helyettesítő párok a 16 Unicode kiegészítő síkban lévő karaktereket jelölik. Az alábbi példa létrehoz egy helyettesítő karaktert, és átadja a Char.IsSurrogatePair(Char, Char) metódusnak annak megállapításához, hogy helyettesítő pár-e.

    string surrogate = "\uD800\uDC03";
    for (int ctr = 0; ctr < surrogate.Length; ctr++) 
       Console.Write($"U+{(ushort)surrogate[ctr]:X2} ");
    
    Console.WriteLine();
    Console.WriteLine("   Is Surrogate Pair: {0}", 
                      Char.IsSurrogatePair(surrogate[0], surrogate[1]));
    // The example displays the following output:
    //       U+D800 U+DC03
    //          Is Surrogate Pair: True
    
    open System
    
    let surrogate = "\uD800\uDC03"
    for i = 0 to surrogate.Length - 1 do
        printf $"U+{uint16 surrogate[i]:X2} "
    
    printfn $"\n   Is Surrogate Pair: {Char.IsSurrogatePair(surrogate[0], surrogate[1])}"
    // The example displays the following output:
    //       U+D800 U+DC03
    //          Is Surrogate Pair: True
    
    Module Example20
        Public Sub Main()
            Dim surrogate As String = ChrW(&HD800) + ChrW(&HDC03)
            For ctr As Integer = 0 To surrogate.Length - 1
                Console.Write("U+{0:X2} ", Convert.ToUInt16(surrogate(ctr)))
            Next
            Console.WriteLine()
            Console.WriteLine("   Is Surrogate Pair: {0}",
                            Char.IsSurrogatePair(surrogate(0), surrogate(1)))
        End Sub
    End Module
    
    ' The example displays the following output:
    '       U+D800 U+DC03
    '          Is Surrogate Pair: True
    

A Unicode szabvány

A sztringek karaktereit UTF-16 kódolt kódegységek jelölik, amelyek megfelelnek a Char értékeknek.

A sztring minden karaktere rendelkezik Unicode-karakterkategóriával, amelyet a .NET-ben az UnicodeCategory enumerálás jelöl. A karakter vagy helyettesítő pár kategóriája a metódus meghívásával CharUnicodeInfo.GetUnicodeCategory határozható meg.

A .NET saját karaktertáblát és a hozzájuk tartozó kategóriákat tart fenn, amely biztosítja, hogy a különböző platformokon futó .NET-implementáció egy adott verziója azonos karakterkategória-információkat adjon vissza. Az összes .NET-verzióban és minden operációsrendszer-platformon a unicode karakteradatbázis adja meg a karakterkategória adatait.

Az alábbi táblázat a .NET-verziókat és a Unicode Standard azon verzióit sorolja fel, amelyeken a karakterkategóriák alapulnak.

.NET-verzió A Unicode Standard verziója
.NET-keretrendszer 1.1 A Unicode Standard 4.0.0-s verziója
.NET-keretrendszer 2.0 A Unicode Standard 5.0.0-s verziója
.NET-keretrendszer 3.5 A Unicode Standard 5.0.0-s verziója
.NET-keretrendszer 4 A Unicode Standard 5.0.0-s verziója
.NET-keretrendszer 4.5 A Unicode Standard 6.3.0-s verziója
.NET-keretrendszer 4.5.1 A Unicode Standard 6.3.0-s verziója
.NET-keretrendszer 4.5.2 A Unicode Standard 6.3.0-s verziója
.NET-keretrendszer 4.6 A Unicode Standard 6.3.0-s verziója
.NET-keretrendszer 4.6.1 A Unicode Standard 6.3.0-s verziója
.NET-keretrendszer 4.6.2-s és újabb verziók A Unicode Standard 8.0.0-s verziója
.NET Core 2.1 A Unicode Standard 8.0.0-s verziója
.NET Core 3.1 A Unicode Standard, 11.0.0-s verzió
.NET 5 A Unicode Standard, 13.0.0-s verzió

A .NET emellett támogatja a Karakterláncok összehasonlítását és rendezését a Unicode szabvány alapján. A karakterlánc-összehasonlítási és rendezési információkat a Unicode kódtárak international components (kivéve a 2019. májusi frissítés Windows 10 előtti Windows verziók esetében).

Beágyazott null karakterek

A .NET-ben az String objektumok tartalmazhatnak beágyazott null karaktereket, amelyek a sztring hosszának részét képezik. Egyes nyelvekben, például a C és a C++ nyelvben azonban a null karakter egy sztring végét jelzi; nem tekinthető a sztring részének, és nem számít bele a sztring hosszába. Ez azt jelenti, hogy a C és C++ programozók vagy C++ nyelven írt kódtárak által a sztringekre vonatkozó alábbi gyakori feltételezések nem feltétlenül érvényesek String objektumokra vonatkoztatva.

  • A strlen vagy a wcslen függvények által visszaadott értékek nem feltétlenül egyenlőek String.Length-vel.

  • A strcpy_s vagy wcscpy_s függvények által létrehozott sztring nem feltétlenül azonos a másolt sztringgel.

Győződjön meg arról, hogy a natív C és C++ kód, amely String objektumokat példányosít, valamint a platformhíváson keresztül String objektumokat kapó kód ne feltételezzék, hogy egy beágyazott null karakter jelöli a sztring végét.

A beágyazott null karakterek a sztringek rendezésekor (vagy összehasonlításakor) és a sztringek keresésekor is másképp lesznek kezelve. A null karaktereket figyelmen kívül hagyjuk két karakterlánc kultúraérzékeny összehasonlításai során, beleértve az invariáns kultúra alkalmazásával történő összehasonlításokat is. Ezek csak a sorszámos vagy a kis- és nagybetűket nem érzékelyítő ordinális összehasonlítások esetében tekinthetők meg. Másfelől a beágyazott null karaktereket mindig figyelembe veszik, amikor sztringeket olyan módszerekkel keresnek, mint például Contains, StartsWith és IndexOf.

Sztringek és indexek

Az index egy Char objektum (nem Unicode-karakter) pozíciója valamelyik String-ben. Az index egy nulla alapú, nem negatív szám, amely a karaktersorozat első pozíciójától indul, vagyis az index pozíciója nulla. Számos keresési módszer, például IndexOf és LastIndexOf, visszaadja egy karakter vagy alsztring indexét a sztringpéldányban.

A Chars[Int32] tulajdonság lehetővé teszi az egyes Char objektumok elérését a sztring indexpozíciója alapján. Mivel a Chars[Int32] tulajdonság az alapértelmezett tulajdonság (a Visual Basicben) vagy az indexelő (C# és F# nyelven), a sztring egyes Char objektumait az alábbi kóddal érheti el. Ez a kód üres szóközt vagy írásjeleket keres egy sztringben annak meghatározásához, hogy a sztring hány szót tartalmaz.

string s1 = "This string consists of a single short sentence.";
int nWords = 0;

s1 = s1.Trim();      
for (int ctr = 0; ctr < s1.Length; ctr++) {
   if (Char.IsPunctuation(s1[ctr]) | Char.IsWhiteSpace(s1[ctr]))
      nWords++;              
}
Console.WriteLine("The sentence\n   {0}\nhas {1} words.",
                  s1, nWords);                                                                     
// The example displays the following output:
//       The sentence
//          This string consists of a single short sentence.
//       has 8 words.
let s1 = "This string consists of a single short sentence."
let mutable nWords = 0

for i = 0 to s1.Length - 1 do
    if Char.IsPunctuation s1[i] || Char.IsWhiteSpace s1[i] then
        nWords <- nWords + 1
printfn $"The sentence\n   {s1}\nhas {nWords} words."
// The example displays the following output:
//       The sentence
//          This string consists of a single short sentence.
//       has 8 words.
Module Example12
    Public Sub Main()
        Dim s1 As String = "This string consists of a single short sentence."
        Dim nWords As Integer = 0

        s1 = s1.Trim()
        For ctr As Integer = 0 To s1.Length - 1
            If Char.IsPunctuation(s1(ctr)) Or Char.IsWhiteSpace(s1(ctr)) Then
                nWords += 1
            End If
        Next
        Console.WriteLine("The sentence{2}   {0}{2}has {1} words.",
                        s1, nWords, vbCrLf)
    End Sub
End Module
' The example displays the following output:
'       The sentence
'          This string consists of a single short sentence.
'       has 8 words.

Mivel az String osztály implementálja az IEnumerable interfészt, iterálhat a sztringben lévő Char objektumokon egy foreach szerkezettel, ahogy az alábbi példában látható.

string s1 = "This string consists of a single short sentence.";
int nWords = 0;

s1 = s1.Trim();      
foreach (var ch in s1) {
   if (Char.IsPunctuation(ch) | Char.IsWhiteSpace(ch))
      nWords++;              
}
Console.WriteLine("The sentence\n   {0}\nhas {1} words.",
                  s1, nWords);                                                                     
// The example displays the following output:
//       The sentence
//          This string consists of a single short sentence.
//       has 8 words.
let s1 = "This string consists of a single short sentence."
let mutable nWords = 0

for ch in s1 do
    if Char.IsPunctuation ch || Char.IsWhiteSpace ch then
        nWords <- nWords + 1
printfn $"The sentence\n   {s1}\nhas {nWords} words."
// The example displays the following output:
//       The sentence
//          This string consists of a single short sentence.
//       has 8 words.
Module Example13
    Public Sub Main()
        Dim s1 As String = "This string consists of a single short sentence."
        Dim nWords As Integer = 0

        s1 = s1.Trim()
        For Each ch In s1
            If Char.IsPunctuation(ch) Or Char.IsWhiteSpace(ch) Then
                nWords += 1
            End If
        Next
        Console.WriteLine("The sentence{2}   {0}{2}has {1} words.",
                        s1, nWords, vbCrLf)
    End Sub
End Module
' The example displays the following output:
'       The sentence
'          This string consists of a single short sentence.
'       has 8 words.

Előfordulhat, hogy az egymást követő indexértékek nem felelnek meg az egymást követő Unicode-karaktereknek, mivel egy Unicode-karakter több Char objektumként is kódolható. A sztringek tartalmazhatnak több karakterből álló szöveges egységeket, amelyeket alapkarakterek alkotnak, amelyeket egy vagy több egyesítő karakter vagy helyettesítő pár követ. Ha objektumok helyett Unicode-karaktereket szeretne használni, használja az Char és System.Globalization.StringInfo osztályokat, valamint a TextElementEnumerator metódust és a String.EnumerateRunes struktúrát. Az alábbi példa a Unicode-karaktereket használó objektumokkal és kódokkal Char működő kódok közötti különbséget mutatja be. Összehasonlítja a mondatok egyes szavaiban szereplő karakterek vagy szövegelemek számát. A karakterlánc két sorozatot tartalmaz: egy alapkaraktert, amelyet egy összevonó karakter követ.

// First sentence of The Mystery of the Yellow Room, by Leroux.
string opening = "Ce n'est pas sans une certaine émotion que "+
                 "je commence à raconter ici les aventures " +
                 "extraordinaires de Joseph Rouletabille."; 
// Character counters.
int nChars = 0;
// Objects to store word count.
List<int> chars = new List<int>();
List<int> elements = new List<int>();

foreach (var ch in opening) {
   // Skip the ' character.
   if (ch == '\u0027') continue;
        
   if (Char.IsWhiteSpace(ch) | (Char.IsPunctuation(ch))) {
      chars.Add(nChars);
      nChars = 0;
   }
   else {
      nChars++;
   }
}

System.Globalization.TextElementEnumerator te = 
   System.Globalization.StringInfo.GetTextElementEnumerator(opening);
while (te.MoveNext()) {
   string s = te.GetTextElement();   
   // Skip the ' character.
   if (s == "\u0027") continue;
   if ( String.IsNullOrEmpty(s.Trim()) | (s.Length == 1 && Char.IsPunctuation(Convert.ToChar(s)))) {
      elements.Add(nChars);         
      nChars = 0;
   }
   else {
      nChars++;
   }
}

// Display character counts.
Console.WriteLine("{0,6} {1,20} {2,20}",
                  "Word #", "Char Objects", "Characters"); 
for (int ctr = 0; ctr < chars.Count; ctr++) 
   Console.WriteLine("{0,6} {1,20} {2,20}",
                     ctr, chars[ctr], elements[ctr]); 
// The example displays the following output:
//       Word #         Char Objects           Characters
//            0                    2                    2
//            1                    4                    4
//            2                    3                    3
//            3                    4                    4
//            4                    3                    3
//            5                    8                    8
//            6                    8                    7
//            7                    3                    3
//            8                    2                    2
//            9                    8                    8
//           10                    2                    1
//           11                    8                    8
//           12                    3                    3
//           13                    3                    3
//           14                    9                    9
//           15                   15                   15
//           16                    2                    2
//           17                    6                    6
//           18                   12                   12
open System
open System.Globalization

// First sentence of The Mystery of the Yellow Room, by Leroux.
let opening = "Ce n'est pas sans une certaine émotion que je commence à raconter ici les aventures extraordinaires de Joseph Rouletabille."
// Character counters.
let mutable nChars = 0
// Objects to store word count.
let chars = ResizeArray<int>()
let elements = ResizeArray<int>()

for ch in opening do
    // Skip the ' character.
    if ch <> '\u0027' then
        if Char.IsWhiteSpace ch || Char.IsPunctuation ch then
            chars.Add nChars
            nChars <- 0
        else
            nChars <- nChars + 1

let te = StringInfo.GetTextElementEnumerator opening
while te.MoveNext() do
    let s = te.GetTextElement()
    // Skip the ' character.
    if s <> "\u0027" then
        if String.IsNullOrEmpty(s.Trim()) || (s.Length = 1 && Char.IsPunctuation(Convert.ToChar s)) then
            elements.Add nChars
            nChars <- 0
        else
            nChars <- nChars + 1

// Display character counts.
printfn "%6s %20s %20s" "Word #" "Char Objects " "Characters"
for i = 0 to chars.Count - 1 do
    printfn "%6d %20d %20d" i chars[i] elements[i]
// The example displays the following output:
//       Word #         Char Objects           Characters
//            0                    2                    2
//            1                    4                    4
//            2                    3                    3
//            3                    4                    4
//            4                    3                    3
//            5                    8                    8
//            6                    8                    7
//            7                    3                    3
//            8                    2                    2
//            9                    8                    8
//           10                    2                    1
//           11                    8                    8
//           12                    3                    3
//           13                    3                    3
//           14                    9                    9
//           15                   15                   15
//           16                    2                    2
//           17                    6                    6
//           18                   12                   12
Imports System.Collections.Generic
Imports System.Globalization

Module Example14
    Public Sub Main()
        ' First sentence of The Mystery of the Yellow Room, by Leroux.
        Dim opening As String = "Ce n'est pas sans une certaine émotion que " +
                              "je commence à raconter ici les aventures " +
                              "extraordinaires de Joseph Rouletabille."
        ' Character counters.
        Dim nChars As Integer = 0
        ' Objects to store word count.
        Dim chars As New List(Of Integer)()
        Dim elements As New List(Of Integer)()

        For Each ch In opening
            ' Skip the ' character.
            If ch = ChrW(&H27) Then Continue For

            If Char.IsWhiteSpace(ch) Or Char.IsPunctuation(ch) Then
                chars.Add(nChars)
                nChars = 0
            Else
                nChars += 1
            End If
        Next

        Dim te As TextElementEnumerator = StringInfo.GetTextElementEnumerator(opening)
        Do While te.MoveNext()
            Dim s As String = te.GetTextElement()
            ' Skip the ' character.
            If s = ChrW(&H27) Then Continue Do
            If String.IsNullOrEmpty(s.Trim()) Or (s.Length = 1 AndAlso Char.IsPunctuation(Convert.ToChar(s))) Then
                elements.Add(nChars)
                nChars = 0
            Else
                nChars += 1
            End If
        Loop

        ' Display character counts.
        Console.WriteLine("{0,6} {1,20} {2,20}",
                        "Word #", "Char Objects", "Characters")
        For ctr As Integer = 0 To chars.Count - 1
            Console.WriteLine("{0,6} {1,20} {2,20}",
                           ctr, chars(ctr), elements(ctr))
        Next
    End Sub
End Module
' The example displays the following output:
'    Word #         Char Objects           Characters
'         0                    2                    2
'         1                    4                    4
'         2                    3                    3
'         3                    4                    4
'         4                    3                    3
'         5                    8                    8
'         6                    8                    7
'         7                    3                    3
'         8                    2                    2
'         9                    8                    8
'        10                    2                    1
'        11                    8                    8
'        12                    3                    3
'        13                    3                    3
'        14                    9                    9
'        15                   15                   15
'        16                    2                    2
'        17                    6                    6
'        18                   12                   12

Ez a példa a StringInfo.GetTextElementEnumerator metódus és a TextElementEnumerator osztály használatával dolgozik, hogy felsorolja a karakterlánc összes szöveges elemét. A metódus meghívásával olyan tömböt is lekérhet, amely tartalmazza az egyes szövegelemek kezdő indexét StringInfo.ParseCombiningCharacters .

Az egyes Char értékek helyett a szövegegységek használatával kapcsolatos további információkért lásd : Bevezetés a karakterkódolásba a .NET-ben.

Null karaktersorok és üres karaktersorok

Az a sztring, amely deklarálva van, de nincs hozzárendelve értékhez, az .null Ha megpróbál metódusokat meghívni a sztringen, egy NullReferenceException kivételt okoz. A null sztring eltér az üres sztringtől, amely egy olyan karakterlánc, amelynek értéke "" vagy String.Empty. Bizonyos esetekben egy metódushívás argumentumaként null sztring vagy üres sztring átadása kivételt eredményez. Ha például null sztringet ad át a Int32.Parse metódusnak, az kivált egy ArgumentNullException kivételt, míg ha egy üres sztringet ad át, akkor egy FormatException kivételt vált ki. Más esetekben a metódusargumentum lehet null vagy üres sztring. Ha például egy osztályhoz biztosít implementációt IFormattable , akkor egy nullértékű és egy üres stringet is azonosítania kell az általános ("G") formátumkijelölővel.

Az String osztály a következő két kényelmi metódust tartalmazza, amelyek lehetővé teszik, hogy tesztelje, a sztring üres-e vagy sem:

  • IsNullOrEmpty, amely azt jelzi, hogy egy sztring vagy null, vagy egyenlő String.Empty-vel. Ez a módszer szükségtelenné teszi a következő kódhoz hasonló kód használatát:

    if (str == null || str.Equals(String.Empty))
    
    if str = null || str.Equals String.Empty then
    
    If str Is Nothing OrElse str.Equals(String.Empty) Then
    
  • IsNullOrWhiteSpace, amely azt jelzi, hogy egy nullsztring egyenlő-e String.Empty, vagy kizárólag szóköz karakterekből áll. Ez a módszer szükségtelenné teszi a következő kódhoz hasonló kód használatát:

    if (str == null || str.Equals(String.Empty) || str.Trim().Equals(String.Empty))
    
    if str = null || str.Equals String.Empty || str.Trim().Equals String.Empty then
    
    If str Is Nothing OrElse str.Equals(String.Empty) OrElse str.Trim().Equals(String.Empty) Then
    

Az alábbi példa egy IsNullOrEmpty egyéni IFormattable.ToString osztály implementálásában használja a Temperature metódust. A metódus támogatja a "G", "C", "F" és "K" formátumú sztringeket. Ha egy üres formátumsztringet vagy egy olyan formátumsztringet adnak át a metódusnak, amelynek értéke null, az értéke "G" formátumsztringre változik.

public string ToString(string format, IFormatProvider provider) 
{
   if (String.IsNullOrEmpty(format)) format = "G";  
   if (provider == null) provider = CultureInfo.CurrentCulture;
   
   switch (format.ToUpperInvariant())
   {
      // Return degrees in Celsius.    
      case "G":
      case "C":
         return temp.ToString("F2", provider) + "°C";
      // Return degrees in Fahrenheit.
      case "F": 
         return (temp * 9 / 5 + 32).ToString("F2", provider) + "°F";
      // Return degrees in Kelvin.
      case "K":   
         return (temp + 273.15).ToString();
      default:
         throw new FormatException(
               String.Format("The {0} format string is not supported.", 
                             format));
   }                                   
}
member _.ToString(format: string, provider: IFormatProvider) =
    let format = 
        if String.IsNullOrEmpty format then "G" else format
    
    let provider: IFormatProvider = 
        if provider = null then CultureInfo.CurrentCulture else provider

    match format.ToUpperInvariant() with
    // Return degrees in Celsius.
    | "G"
    | "C" ->
        temp.ToString("F2", provider) + "°C"
    // Return degrees in Fahrenheit.
    | "F" ->
        (temp * 9. / 5. + 32.).ToString("F2", provider) + "°F"
    // Return degrees in Kelvin.
    | "K" ->
        (temp + 273.15).ToString()
    | _ ->
        raise (FormatException(String.Format("The {0} format string is not supported.",format)))
Public Overloads Function ToString(fmt As String, provider As IFormatProvider) As String _
               Implements IFormattable.ToString
    If String.IsNullOrEmpty(fmt) Then fmt = "G"
    If provider Is Nothing Then provider = CultureInfo.CurrentCulture

    Select Case fmt.ToUpperInvariant()
     ' Return degrees in Celsius.    
        Case "G", "C"
            Return temp.ToString("F2", provider) + "°C"
     ' Return degrees in Fahrenheit.
        Case "F"
            Return (temp * 9 / 5 + 32).ToString("F2", provider) + "°F"
     ' Return degrees in Kelvin.
        Case "K"
            Return (temp + 273.15).ToString()
        Case Else
            Throw New FormatException(
              String.Format("The {0} format string is not supported.",
                            fmt))
    End Select
End Function

A nem módosíthatóság és a StringBuilder osztály

Az String objektumokat nem módosíthatónak (írásvédettnek) nevezzük, mert az értéke a létrehozás után nem módosítható. Azok a metódusok, amelyek úgy tűnik, hogy módosítanak egy objektumot String , valójában egy új String objektumot ad vissza, amely tartalmazza a módosítást.

Mivel a sztringek nem módosíthatók, a sztringmanipulálási rutinok, amelyek ismétlődő kiegészítéseket vagy törléseket hajtanak végre az egyetlen sztringhez, jelentős teljesítménybeli büntetést vonhatnak maga után. Az alábbi kód például egy véletlenszám-generátort használ, hogy létrehozzon egy 1000 karakter hosszú sztringet az 0x0001 és 0x052F közötti tartományban. Bár úgy tűnik, hogy a kód sztringösszefűzést használ egy új karakter hozzáfűzéséhez a meglévő, elnevezett strsztringhez, valójában létrehoz egy új String objektumot minden egyes összefűzési művelethez.

using System;
using System.IO;
using System.Text;

public class Example
{
   public static void Main()
   {
      Random rnd = new Random();
      
      string str = String.Empty;
      StreamWriter sw = new StreamWriter(@".\StringFile.txt", 
                           false, Encoding.Unicode);

      for (int ctr = 0; ctr <= 1000; ctr++) {
         str += (char)rnd.Next(1, 0x0530);
         if (str.Length % 60 == 0)
            str += Environment.NewLine;          
      }                    
      sw.Write(str);
      sw.Close();
   }
}
open System
open System.IO
open System.Text

do
    let rnd = Random()

    let mutable str = String.Empty
    use sw = new StreamWriter(@".\StringFile.txt", false, Encoding.Unicode)
    for _ = 0 to 1000 do
        str <- str + (rnd.Next(1, 0x0530) |> char |> string)
        if str.Length % 60 = 0 then
            str <- str + Environment.NewLine
    sw.Write str
Imports System.IO
Imports System.Text

Module Example10
    Public Sub Main()
        Dim rnd As New Random()

        Dim str As String = String.Empty
        Dim sw As New StreamWriter(".\StringFile.txt",
                           False, Encoding.Unicode)

        For ctr As Integer = 0 To 1000
            str += ChrW(rnd.Next(1, &H530))
            If str.Length Mod 60 = 0 Then str += vbCrLf
        Next
        sw.Write(str)
        sw.Close()
    End Sub
End Module

A StringBuilder osztályt használhatja az String osztály helyett olyan műveletekhez, amelyek többször módosítják egy sztring értékét. Az osztály String példányaival ellentétben az StringBuilder objektumok nem módosíthatók; ha egy sztringből összefűz, hozzáfűz vagy töröl részsztringeket, a műveletek egyetlen sztringen lesznek végrehajtva. Ha befejezte egy objektum értékének StringBuilder módosítását, meghívhatja annak metódusát StringBuilder.ToString , hogy sztringgé konvertálja. Az alábbi példa az előző példában használt String helyett egy StringBuilder objektumot alkalmaz 1000 véletlenszerű karakter összefűzésére a 0x0001 és 0x052F tartományban.

using System;
using System.IO;
using System.Text;

public class Example
{
   public static void Main()
   {
      Random rnd = new Random();
      StringBuilder sb = new StringBuilder();
      StreamWriter sw = new StreamWriter(@".\StringFile.txt", 
                                         false, Encoding.Unicode);

      for (int ctr = 0; ctr <= 1000; ctr++) {
         sb.Append((char)rnd.Next(1, 0x0530));
         if (sb.Length % 60 == 0)
            sb.AppendLine();          
      }                    
      sw.Write(sb.ToString());
      sw.Close();
   }
}
open System
open System.IO
open System.Text

do
    let rnd = Random()
    let sb = StringBuilder()
    use sw = new StreamWriter(@".\StringFile.txt", false, Encoding.Unicode)

    for _ = 0 to 1000 do
        sb.Append(rnd.Next(1, 0x0530) |> char) |> ignore
        if sb.Length % 60 = 0 then
            sb.AppendLine() |> ignore
    sw.Write(string sb)
Imports System.IO
Imports System.Text

Module Example11
    Public Sub Main()
        Dim rnd As New Random()
        Dim sb As New StringBuilder()
        Dim sw As New StreamWriter(".\StringFile.txt",
                                 False, Encoding.Unicode)

        For ctr As Integer = 0 To 1000
            sb.Append(ChrW(rnd.Next(1, &H530)))
            If sb.Length Mod 60 = 0 Then sb.AppendLine()
        Next
        sw.Write(sb.ToString())
        sw.Close()
    End Sub
End Module

Sorrendi vs. kultúraérzékeny műveletek

Az String osztály tagjai sorszám vagy kultúraérzékeny (nyelvi) műveleteket hajtanak végre egy String objektumon. Az ordinális művelet az egyes Char objektumok numerikus értékére hat. A kultúraérzékeny művelet az objektum értékére hat, és figyelembe veszi a String kultúraspecifikus burkolati, rendezési, formázási és elemzési szabályokat. A kultúraérzékeny műveletek explicit módon deklarált vagy implicit aktuális kultúra kontextusában hajthatók végre. A két művelettípus nagyon eltérő eredményeket hozhat, ha ugyanazon a sztringen hajtják végre őket.

A .NET támogatja a kultúraérzékeny nyelvi sztringműveleteket is az invariáns kultúra (CultureInfo.InvariantCulture) használatával, amely lazán alapul az angol nyelv régiótól független kulturális beállításain. A többi System.Globalization.CultureInfo beállítástól eltérően az invariáns kultúra beállításai garantáltan egységesek maradnak egyetlen számítógépen, rendszerről rendszerre és a .NET különböző verzióira. Az invariáns kultúra egyfajta fekete dobozként tekinthető, amely biztosítja a szövegelemek összehasonlításának és rendezésének stabilitását minden kultúra esetén.

Important

Ha az alkalmazás biztonsági döntést hoz egy szimbolikus azonosítóról, például egy fájlnévről vagy egy elnevezett csőről, vagy a tárolt adatokról, például egy XML-fájl szövegalapú adatairól, a műveletnek a kultúraérzékeny összehasonlítás helyett egy sorszámos összehasonlítást kell használnia. Ennek az az oka, hogy a kultúraérzékeny összehasonlítás a hatályos kultúrától függően eltérő eredményeket hozhat, míg a sorszámok összehasonlítása kizárólag az összehasonlított karakterek bináris értékétől függ.

Important

A karakterláncműveleteket végrehajtó legtöbb metódus tartalmaz egy metódus túlterhelést, amelynek van egy StringComparison típusú paramétere, amely lehetővé teszi annak megadását, hogy a metódus ordinalis vagy kultúraérzékeny műveletet hajt-e végre. Általában ezt a túlterhelést kell meghívnia, hogy egyértelmű legyen a metódushívás szándéka. A sztringek sorszám- és kultúraérzékeny műveleteinek használatára vonatkozó ajánlott eljárásokért és útmutatásért tekintse meg a sztringek használatának ajánlott eljárásait.

A casing, az elemzés és a formázás, az összehasonlítás és a rendezés, valamint az egyenlőség tesztelésének műveletei sorrendi vagy kulturális szempontból érzékenyek lehetnek. A következő szakaszok a művelet egyes kategóriáiról szólnak.

Jótanács

Mindig egy olyan metódustúlterhelést kell hívnia, amely egyértelművé teszi a metódushívás szándékát. Például, ahelyett hogy meghívná a Compare(String, String) metódust, hogy az aktuális kultúra konvenciói szerint hajtson végre két sztring kultúraérzékeny összehasonlítását, hívja meg a Compare(String, String, StringComparison) metódust azzal, hogy StringComparison.CurrentCulture értéket adjon meg az comparisonType argumentumnál. További információ: Ajánlott eljárások sztringek használatához.

A rendezési és összehasonlító műveletekben használt karaktersúlyokra vonatkozó információkat tartalmazó szövegfájlokat az Alapértelmezett Unicode rendezési elemtáblából töltheti le.

Burkolat

A nagybetűsítési szabályok határozzák meg, hogyan változtatható meg egy Unicode karakter nagybetűsítése, például kisbetűből nagybetűvé. A rendszer gyakran sztring-összehasonlítás előtt hajt végre egy burkolati műveletet. Például egy karakterlánc nagybetűssé alakítható, hogy összehasonlítható legyen egy másik nagybetűs karakterlánccal. A sztringben lévő karaktereket kisbetűssé alakíthatja a ToLower metódus meghívásával ToLowerInvariant , és a metódus meghívásával ToUpperToUpperInvariant nagybetűssé alakíthatja őket. Emellett a TextInfo.ToTitleCase metódussal címsor esetre alakíthat egy karakterláncot.

Megjegyzés:

Csak Linux és macOS rendszereken futó .NET Core: A C- és Posix-kultúrák rendezési viselkedése mindig megkülönbözteti a kis- és nagybetűket, mivel ezek a kultúrák nem a megszokott Unicode rendezési sorrendet használják. Azt javasoljuk, hogy a C vagy a Posixtól eltérő kultúrát használjon a kultúraérzékeny, kis- és nagybetűkre nem érzékeny rendezési műveletek végrehajtásához.

A burkolási műveletek alapulhatnak a jelenlegi kultúra, egy megadott kultúra, vagy az invariáns kultúra szabályain. Mivel az esetleképezések a használt kultúrától függően eltérőek lehetnek, a burkolati műveletek eredménye a kultúrától függően változhat. A burkolatok tényleges különbségei háromféleek:

  • Különbségek a LATIN NAGY I (U+0049), a LATIN KIS I (U+0069), a LATIN NAGY I PONT FELETT (U+0130) és a LATIN KIS I PONT NÉLKÜL (U+0131) esetleképezésében. A tr-TR (török (Törökország)) és az-Latn-AZ (azerbajdzsáni, latin) kultúrákban, valamint a tr, az és az-Latn semleges kultúrákban a LATIN NAGYBETŰS I betű kisbetűje a LATIN KISBETŰ DOTLESS I, a latin kisbetűs I betű nagybetűs megfelelője pedig a LATIN NAGYBETŰS I PONTTAL. Minden más kultúrában, beleértve az invariáns kultúrát, a LATIN KISBETŰS I és a LATIN NAGYBETŰS I kis- és nagybetűs megfelelői.

    Az alábbi példa bemutatja, hogyan hiúsulhat meg a fájlrendszer hozzáférésének megakadályozására tervezett sztring-összehasonlítás, ha kultúraérzékeny burkolat-összehasonlításra támaszkodik. (Az invariáns kultúra burkolati konvencióit kellett volna használni.)

    using System;
    using System.Globalization;
    using System.Threading;
    
    public class Example
    {
       const string disallowed = "file";
       
       public static void Main()
       {
          IsAccessAllowed(@"FILE:\\\c:\users\user001\documents\FinancialInfo.txt");
       }
    
       private static void IsAccessAllowed(String resource)
       {
          CultureInfo[] cultures = { CultureInfo.CreateSpecificCulture("en-US"),
                                     CultureInfo.CreateSpecificCulture("tr-TR") };
          String scheme = null;
          int index = resource.IndexOfAny( new Char[] { '\\', '/' } );
          if (index > 0) 
             scheme = resource.Substring(0, index - 1);
    
          // Change the current culture and perform the comparison.
          foreach (var culture in cultures) {
             Thread.CurrentThread.CurrentCulture = culture;
             Console.WriteLine("Culture: {0}", CultureInfo.CurrentCulture.DisplayName);
             Console.WriteLine(resource);
             Console.WriteLine("Access allowed: {0}", 
                               ! String.Equals(disallowed, scheme, StringComparison.CurrentCultureIgnoreCase));      
             Console.WriteLine();
          }   
       }
    }
    // The example displays the following output:
    //       Culture: English (United States)
    //       FILE:\\\c:\users\user001\documents\FinancialInfo.txt
    //       Access allowed: False
    //       
    //       Culture: Turkish (Turkey)
    //       FILE:\\\c:\users\user001\documents\FinancialInfo.txt
    //       Access allowed: True
    
    open System
    open System.Globalization
    open System.Threading
    
    let disallowed = "file"
    
    let isAccessAllowed (resource: string) =
        let cultures = 
            [| CultureInfo.CreateSpecificCulture "en-US"
               CultureInfo.CreateSpecificCulture "tr-TR" |]
        let index = resource.IndexOfAny [| '\\'; '/' |]
        let scheme =
            if index > 0 then
                resource.Substring(0, index - 1)
            else 
                null
    
        // Change the current culture and perform the comparison.
        for culture in cultures do
            Thread.CurrentThread.CurrentCulture <- culture
            printfn $"Culture: {CultureInfo.CurrentCulture.DisplayName}"
            printfn $"{resource}"
            printfn $"Access allowed: {String.Equals(disallowed, scheme, StringComparison.CurrentCultureIgnoreCase) |> not}"
            printfn ""
            
    isAccessAllowed @"FILE:\\\c:\users\user001\documents\FinancialInfo.txt"
    // The example displays the following output:
    //       Culture: English (United States)
    //       FILE:\\\c:\users\user001\documents\FinancialInfo.txt
    //       Access allowed: False
    //
    //       Culture: Turkish (Turkey)
    //       FILE:\\\c:\users\user001\documents\FinancialInfo.txt
    //       Access allowed: True
    
    Imports System.Globalization
    Imports System.Threading
    
    Module Example2
        Const disallowed = "file"
    
        Public Sub Main()
            IsAccessAllowed("FILE:\\\c:\users\user001\documents\FinancialInfo.txt")
        End Sub
    
        Private Sub IsAccessAllowed(resource As String)
            Dim cultures() As CultureInfo = {CultureInfo.CreateSpecificCulture("en-US"),
                                            CultureInfo.CreateSpecificCulture("tr-TR")}
            Dim scheme As String = Nothing
            Dim index As Integer = resource.IndexOfAny({"\"c, "/"c})
            If index > 0 Then scheme = resource.Substring(0, index - 1)
    
            ' Change the current culture and perform the comparison.
            For Each culture In cultures
                Thread.CurrentThread.CurrentCulture = culture
                Console.WriteLine("Culture: {0}", CultureInfo.CurrentCulture.DisplayName)
                Console.WriteLine(resource)
                Console.WriteLine("Access allowed: {0}",
                               Not String.Equals(disallowed, scheme, StringComparison.CurrentCultureIgnoreCase))
                Console.WriteLine()
            Next
        End Sub
    End Module
    ' The example displays the following output:
    '       Culture: English (United States)
    '       FILE:\\\c:\users\user001\documents\FinancialInfo.txt
    '       Access allowed: False
    '       
    '       Culture: Turkish (Turkey)
    '       FILE:\\\c:\users\user001\documents\FinancialInfo.txt
    '       Access allowed: True
    
  • Eltérések az invariáns kultúra és az összes többi kultúra közötti esetleképezésekben. Ezekben az esetekben az invariáns kultúra kis- és nagybetűsítési szabályaival egy karaktert nagy- vagy kisbetűssé alakítva ugyanazt a karaktert kapjuk vissza. Minden más kultúrában egy másik karaktert ad vissza. Az érintett karakterek némelyike az alábbi táblázatban látható.

    Karakter Ha megváltozik Returns
    MIKRON JEL (U+00B5) NAGYBETŰ GÖRÖG NAGYBETŰ MU (U+-39C)
    LATIN NAGYBETŰ I FÖLÖTTI PONTTAL (U+0130) Kisbetűs LATIN KIS I BETŰ (U+0069)
    LATIN KIS BETŰ PONT NÉLKÜLI I (U+0131) NAGYBETŰ LATIN NAGYBETŰS I (U+0049)
    LATIN KIS BETŰ HOSSZÚ S (U+017F) NAGYBETŰ LATIN NAGYBETŰS S (U+0053)
    LATIN NAGY D BETŰ KIS Z BETŰVEL CARON (U+01C5) Kisbetűs LATIN KIS DZ BETŰ KARONNAL (U+01C6)
    GÖRÖG YPOGEGRAMMENI ÖSSZEHANGOLÁSA (U+0345) NAGYBETŰ GÖRÖG NAGYBETŰS IOTA (U+0399)
  • Kétbetűs vegyes kis- és nagybetűpárok esetleképezéseinek különbségei az ASCII karaktertartományban. A legtöbb kultúrában a kétbetűs vegyes kis- és nagybetűs pár egyenlő az egyenértékű kétbetűs nagybetűs vagy kisbetűs párral. Ez nem igaz a következő kétbetűs párokra a következő kultúrákban, mert minden esetben egy digráfhoz hasonlítják őket:

    • "lJ" és "nJ" a hr-HR (horvát (Horvátország)) kultúrában.
    • "cH" a cs-CZ (Cseh Köztársaság)) és az sk-SK (szlovák (Szlovákia)) kultúrákban.
    • "aA" a da-DK (dán (Dánia)) kultúrában.
    • "cS", "dZ", "dZS", "nY", "sZ", "tY" és "zS" a hu-HU (magyar (Magyarország)) kultúrában.
    • "cH" és "lL" az es-ES_tradnl (spanyol (Spanyolország, hagyományos rendezés)) kultúrában.
    • "cH", "gI", "kH", "nG", "nH", "pH", "qU'", "tH" és "tR" a vi-VN (vietnami (Vietnam)) kultúrában.

    Szokatlan azonban olyan helyzet, amikor a párok kultúraérzékeny összehasonlítása problémákat okoz, mivel ezek a párok nem gyakoriak rögzített sztringekben vagy azonosítókban.

Az alábbi példa a karakterláncok nagybetűkre alakításakor a kultúrák közötti betűformázási szabályok néhány különbségét szemlélteti.

using System;
using System.Globalization;
using System.IO;

public class Example
{
   public static void Main()
   {
      StreamWriter sw = new StreamWriter(@".\case.txt");   
      string[] words = { "file", "sıfır", "Dženana" };
      CultureInfo[] cultures = { CultureInfo.InvariantCulture, 
                                 new CultureInfo("en-US"),  
                                 new CultureInfo("tr-TR") };

      foreach (var word in words) {
         sw.WriteLine("{0}:", word);
         foreach (var culture in cultures) {
            string name = String.IsNullOrEmpty(culture.Name) ? 
                                 "Invariant" : culture.Name;
            string upperWord = word.ToUpper(culture);
            sw.WriteLine("   {0,10}: {1,7} {2, 38}", name, 
                         upperWord, ShowHexValue(upperWord));
         }
         sw.WriteLine();  
      }
      sw.Close();
   }

   private static string ShowHexValue(string s)
   {
      string retval = null;
      foreach (var ch in s) {
         byte[] bytes = BitConverter.GetBytes(ch);
         retval += String.Format("{0:X2} {1:X2} ", bytes[1], bytes[0]);     
      }
      return retval;
   } 
}
// The example displays the following output:
//    file:
//        Invariant:    FILE               00 46 00 49 00 4C 00 45 
//            en-US:    FILE               00 46 00 49 00 4C 00 45 
//            tr-TR:    FİLE               00 46 01 30 00 4C 00 45 
//    
//    sıfır:
//        Invariant:   SıFıR         00 53 01 31 00 46 01 31 00 52 
//            en-US:   SIFIR         00 53 00 49 00 46 00 49 00 52 
//            tr-TR:   SIFIR         00 53 00 49 00 46 00 49 00 52 
//    
//    Dženana:
//        Invariant:  DžENANA   01 C5 00 45 00 4E 00 41 00 4E 00 41 
//            en-US:  DŽENANA   01 C4 00 45 00 4E 00 41 00 4E 00 41 
//            tr-TR:  DŽENANA   01 C4 00 45 00 4E 00 41 00 4E 00 41
open System
open System.Globalization
open System.IO

let showHexValue (s: string) =
    let mutable retval = ""
    for ch in s do
        let bytes = BitConverter.GetBytes ch
        retval <- retval + String.Format("{0:X2} {1:X2} ", bytes[1], bytes[0])
    retval

do
    use sw = new StreamWriter(@".\case.txt")
    let words = [| "file"; "sıfır"; "Dženana" |]
    let cultures = 
        [| CultureInfo.InvariantCulture 
           CultureInfo "en-US"
           CultureInfo "tr-TR" |]

    for word in words do
        sw.WriteLine("{0}:", word)
        for culture in cultures do
            let name =
                 if String.IsNullOrEmpty culture.Name then "Invariant" else culture.Name
            let upperWord = word.ToUpper culture
            sw.WriteLine("   {0,10}: {1,7} {2, 38}", name, upperWord, showHexValue upperWord)
        sw.WriteLine()
    sw.Close()

// The example displays the following output:
//    file:
//        Invariant:    FILE               00 46 00 49 00 4C 00 45
//            en-US:    FILE               00 46 00 49 00 4C 00 45
//            tr-TR:    FİLE               00 46 01 30 00 4C 00 45
//
//    sıfır:
//        Invariant:   SıFıR         00 53 01 31 00 46 01 31 00 52
//            en-US:   SIFIR         00 53 00 49 00 46 00 49 00 52
//            tr-TR:   SIFIR         00 53 00 49 00 46 00 49 00 52
//
//    Dženana:
//        Invariant:  DžENANA   01 C5 00 45 00 4E 00 41 00 4E 00 41
//            en-US:  DŽENANA   01 C4 00 45 00 4E 00 41 00 4E 00 41
//            tr-TR:  DŽENANA   01 C4 00 45 00 4E 00 41 00 4E 00 41
Imports System.Globalization
Imports System.IO

Module Example1
    Public Sub Main()
        Dim sw As New StreamWriter(".\case.txt")
        Dim words As String() = {"file", "sıfır", "Dženana"}
        Dim cultures() As CultureInfo = {CultureInfo.InvariantCulture,
                                        New CultureInfo("en-US"),
                                        New CultureInfo("tr-TR")}

        For Each word In words
            sw.WriteLine("{0}:", word)
            For Each culture In cultures
                Dim name As String = If(String.IsNullOrEmpty(culture.Name),
                                 "Invariant", culture.Name)
                Dim upperWord As String = word.ToUpper(culture)
                sw.WriteLine("   {0,10}: {1,7} {2, 38}", name,
                         upperWord, ShowHexValue(upperWord))

            Next
            sw.WriteLine()
        Next
        sw.Close()
    End Sub

    Private Function ShowHexValue(s As String) As String
        Dim retval As String = Nothing
        For Each ch In s
            Dim bytes() As Byte = BitConverter.GetBytes(ch)
            retval += String.Format("{0:X2} {1:X2} ", bytes(1), bytes(0))
        Next
        Return retval
    End Function
End Module
' The example displays the following output:
'    file:
'        Invariant:    FILE               00 46 00 49 00 4C 00 45 
'            en-US:    FILE               00 46 00 49 00 4C 00 45 
'            tr-TR:    FİLE               00 46 01 30 00 4C 00 45 
'    
'    sıfır:
'        Invariant:   SıFıR         00 53 01 31 00 46 01 31 00 52 
'            en-US:   SIFIR         00 53 00 49 00 46 00 49 00 52 
'            tr-TR:   SIFIR         00 53 00 49 00 46 00 49 00 52 
'    
'    Dženana:
'        Invariant:  DžENANA   01 C5 00 45 00 4E 00 41 00 4E 00 41 
'            en-US:  DŽENANA   01 C4 00 45 00 4E 00 41 00 4E 00 41 
'            tr-TR:  DŽENANA   01 C4 00 45 00 4E 00 41 00 4E 00 41

Elemzés és formázás

A formázás és az elemzés inverz művelet. A formázási szabályok határozzák meg, hogyan alakíthatók át egy érték (például dátum és idő vagy szám) sztring-ábrázolására, míg az elemzési szabályok határozzák meg, hogyan alakíthatók át sztring-ábrázolások értékké, például dátummá és idővé. A formázási és elemzési szabályok a kulturális konvencióktól függnek. Az alábbi példa azt a kétértelműséget szemlélteti, amely egy kultúraspecifikus dátumsztring értelmezésekor merülhet fel. Anélkül, hogy ismernénk a dátum formátumát előállító kultúra konvencióit, nem tudhatjuk, hogy a 03/01/2011, a 3/1/2011, és az 01/03/2011 a 2011. január 3.-át vagy a 2011. március 1.-jét jelenti-e.

using System;
using System.Globalization;

public class Example
{
   public static void Main()
   {
      DateTime date = new DateTime(2011, 3, 1);
      CultureInfo[] cultures = { CultureInfo.InvariantCulture, 
                                 new CultureInfo("en-US"), 
                                 new CultureInfo("fr-FR") };

      foreach (var culture in cultures)
         Console.WriteLine("{0,-12} {1}", String.IsNullOrEmpty(culture.Name) ?
                           "Invariant" : culture.Name, 
                           date.ToString("d", culture));                                    
   }
}
// The example displays the following output:
//       Invariant    03/01/2011
//       en-US        3/1/2011
//       fr-FR        01/03/2011
open System
open System.Globalization

let date = DateTime(2011, 3, 1)
let cultures = 
      [| CultureInfo.InvariantCulture
         CultureInfo "en-US"
         CultureInfo "fr-FR" |]

for culture in cultures do
    printfn $"""{(if String.IsNullOrEmpty culture.Name then "Invariant" else culture.Name),-12} {date.ToString("d", culture)}"""
// The example displays the following output:
//       Invariant    03/01/2011
//       en-US        3/1/2011
//       fr-FR        01/03/2011
Imports System.Globalization

Module Example8
    Public Sub Main()
        Dim dat As Date = #3/1/2011#
        Dim cultures() As CultureInfo = {CultureInfo.InvariantCulture,
                                        New CultureInfo("en-US"),
                                        New CultureInfo("fr-FR")}

        For Each culture In cultures
            Console.WriteLine("{0,-12} {1}", If(String.IsNullOrEmpty(culture.Name),
                           "Invariant", culture.Name),
                           dat.ToString("d", culture))
        Next
    End Sub
End Module
' The example displays the following output:
'       Invariant    03/01/2011
'       en-US        3/1/2011
'       fr-FR        01/03/2011

Hasonlóképpen, ahogy az alábbi példa is mutatja, egyetlen sztring különböző dátumokat hozhat létre attól függően, hogy melyik kultúrát használják az elemzési műveletben.

using System;
using System.Globalization;

public class Example
{
   public static void Main()
   {
      string dateString = "07/10/2011";
      CultureInfo[] cultures = { CultureInfo.InvariantCulture, 
                                 CultureInfo.CreateSpecificCulture("en-GB"), 
                                 CultureInfo.CreateSpecificCulture("en-US") };
      Console.WriteLine("{0,-12} {1,10} {2,8} {3,8}\n", "Date String", "Culture", 
                                                 "Month", "Day");
      foreach (var culture in cultures) {
         DateTime date = DateTime.Parse(dateString, culture);
         Console.WriteLine("{0,-12} {1,10} {2,8} {3,8}", dateString, 
                           String.IsNullOrEmpty(culture.Name) ?
                           "Invariant" : culture.Name, 
                           date.Month, date.Day);
      }                      
   }
}
// The example displays the following output:
//       Date String     Culture    Month      Day
//       
//       07/10/2011    Invariant        7       10
//       07/10/2011        en-GB       10        7
//       07/10/2011        en-US        7       10
open System
open System.Globalization

let dateString = "07/10/2011"
let cultures = 
    [| CultureInfo.InvariantCulture
       CultureInfo.CreateSpecificCulture "en-GB"
       CultureInfo.CreateSpecificCulture "en-US" |]
printfn $"""{"Date String",-12} {"Culture",10} {"Month",8} {"Day",8}\n"""
for culture in cultures do
    let date = DateTime.Parse(dateString, culture)
    printfn $"""{dateString,-12} {(if String.IsNullOrEmpty culture.Name then "Invariant" else culture.Name),10} {date.Month,8} {date.Day,8}"""
// The example displays the following output:
//       Date String     Culture    Month      Day
//
//       07/10/2011    Invariant        7       10
//       07/10/2011        en-GB       10        7
//       07/10/2011        en-US        7       10
Imports System.Globalization

Module Example18
    Public Sub Main()
        Dim dateString As String = "07/10/2011"
        Dim cultures() As CultureInfo = {CultureInfo.InvariantCulture,
                                        CultureInfo.CreateSpecificCulture("en-GB"),
                                        CultureInfo.CreateSpecificCulture("en-US")}
        Console.WriteLine("{0,-12} {1,10} {2,8} {3,8}", "Date String", "Culture",
                                                 "Month", "Day")
        Console.WriteLine()
        For Each culture In cultures
            Dim dat As Date = DateTime.Parse(dateString, culture)
            Console.WriteLine("{0,-12} {1,10} {2,8} {3,8}", dateString,
                           If(String.IsNullOrEmpty(culture.Name),
                           "Invariant", culture.Name),
                           dat.Month, dat.Day)
        Next
    End Sub
End Module
' The example displays the following output:
'       Date String     Culture    Month      Day
'       
'       07/10/2011    Invariant        7       10
'       07/10/2011        en-GB       10        7
'       07/10/2011        en-US        7       10

Sztringek összehasonlítása és rendezése

A sztringek összehasonlítására és rendezésére vonatkozó konvenciók kultúránként eltérőek. A rendezési sorrend például a fonetika vagy a karakterek vizuális ábrázolása alapján történhet. A kelet-ázsiai nyelvekben a karaktereket az ideográfiák vonalai és gyöke rendezi. A rendezés attól is függ, hogy a nyelvek és a kultúrák milyen sorrendben használják az ábécét. A dán nyelv például egy "Æ" karaktert tartalmaz, amelyet az ábécé "Z" betűje után rendez. Emellett az összehasonlítások megkülönböztethetik a kis- és nagybetűs írásmódot, és a kis- és nagybetűs szabályok kultúránként eltérhetnek. Az ordinális összehasonlítás viszont a sztringek egyes karaktereinek Unicode-kódpontjait használja a sztringek összehasonlítása és rendezése során.

A rendezési szabályok határozzák meg a Unicode-karakterek betűrendjét, valamint azt, hogy két sztring hogyan viszonyul egymáshoz. Például a String.Compare(String, String, StringComparison) metódus két karakterláncot hasonlít össze a StringComparison paraméter alapján. Ha a paraméter értéke az StringComparison.CurrentCulture, a metódus az aktuális kultúra konvencióit használó nyelvi összehasonlítást végez; ha a paraméter értéke, StringComparison.Ordinala metódus egy sorszámos összehasonlítást hajt végre. Következésképpen, ahogy az alábbi példa is mutatja, ha a jelenlegi kulturális beállítás amerikai angol, akkor a metódus első hívása String.Compare(String, String, StringComparison) (a kultúraérzékeny összehasonlítás használatával) az "a"-t kisebbnek tekinti, mint az "A"-t, de a második hívás ugyanahhoz a metódushoz (az ordinális összehasonlítás használatával) az "a"-t nagyobbnak tekinti, mint az "A"-t.

using System;
using System.Globalization;
using System.Threading;

public class Example
{
   public static void Main()
   {
      Thread.CurrentThread.CurrentCulture = CultureInfo.CreateSpecificCulture("en-US");
      Console.WriteLine(String.Compare("A", "a", StringComparison.CurrentCulture));
      Console.WriteLine(String.Compare("A", "a", StringComparison.Ordinal));
   }
}
// The example displays the following output:
//       1
//       -32
open System
open System.Globalization
open System.Threading

Thread.CurrentThread.CurrentCulture <- CultureInfo.CreateSpecificCulture "en-US"
printfn $"""{String.Compare("A", "a", StringComparison.CurrentCulture)}"""
printfn $"""{String.Compare("A", "a", StringComparison.Ordinal)}"""
// The example displays the following output:
//       1
//       -32
Imports System.Globalization
Imports System.Threading

Module Example3
    Public Sub Main()
        Thread.CurrentThread.CurrentCulture = CultureInfo.CreateSpecificCulture("en-US")
        Console.WriteLine(String.Compare("A", "a", StringComparison.CurrentCulture))
        Console.WriteLine(String.Compare("A", "a", StringComparison.Ordinal))
    End Sub
End Module
' The example displays the following output:
'       1                                                                                     
'       -32

A .NET támogatja a szó-, sztring- és ordinalszerinti rendezési szabályokat.

  • A szórendezés olyan karakterláncok kultúraérzékeny összehasonlítását hajtja végre, amelyben bizonyos nem alfanumerikus Unicode-karakterekhez speciális súlyok vannak rendelve. Előfordulhat például, hogy a kötőjel (-) nagyon kis súlyt tartalmaz, így a "coop" és a "co-op" egymás mellett jelenik meg egy rendezett listában. Azoknak a metódusoknak a String listáját, amelyek két sztringet hasonlítanak össze szó szerinti rendezési szabályokkal, tekintse meg a Karakterláncműveletek kategória szerint című szakaszt.

  • A karakterlánc rendezés szintén kulturális szempontból érzékeny összehasonlítást végez. Hasonló a szórendezéshez, kivéve, hogy nincsenek speciális esetek, és az összes nonalphanumerikus szimbólum megelőzi az alfanumerikus Unicode-karaktereket. Két karakterlánc összehasonlítható a karakterlánc rendezési szabályok alkalmazásával a CompareInfo.Compare metódus túlterheléseinek meghívásával, amelyek options paramétere CompareOptions.StringSort értékkel van ellátva. Vegye figyelembe, hogy ez az egyetlen módszer, amellyel a .NET két sztringet hasonlít össze karakterlánc-rendezési szabályokkal.

  • Az ordinális rendezés a sztringek karakterláncait hasonlítja össze a sztring egyes Char objektumainak numerikus értéke alapján. A sorrendi összehasonlítás automatikusan megkülönbözteti a kis- és nagybetűket, mivel a karakter kis- és nagybetűs verziói eltérő kódpontokkal rendelkeznek. Ha azonban az eset nem fontos, megadhat egy olyan sorszámos összehasonlítást, amely figyelmen kívül hagyja az esetet. Ez egyenértékű azzal, hogy a karakterláncot nagybetűssé alakítja az invariáns kultúra használatával, majd végrehajt egy ordinalis összehasonlítást az eredményen. Azoknak a metódusoknak a String listáját, amelyek két sztringet hasonlítanak össze ordinalis rendezési szabályokkal, lásd a Karakterláncműveletek kategória szerint című szakaszt.

A kultúraérzékeny összehasonlítás olyan összehasonlítás, amely explicit módon vagy implicit módon használ objektumot CultureInfo , beleértve a tulajdonság által CultureInfo.InvariantCulture megadott invariáns kultúrát is. Az implicit kultúra az aktuális kultúra, amelyet a Thread.CurrentCulture és CultureInfo.CurrentCulture tulajdonságok határoznak meg. A különböző kultúrákban jelentős eltérések vannak a betűrendben szereplő karakterek (azaz a metódus által Char.IsLetter visszaadott truekarakterek) sorrendjében. Végezhet kultúraérzékeny összehasonlítást, amely egy adott kultúra konvencióit használja, ha egy CultureInfo objektumot ad meg egy sztring-összehasonlítási módszerhez, például Compare(String, String, CultureInfo, CompareOptions). Megadhat egy kultúraérzékeny összehasonlítást, amely a jelenlegi kultúra konvencióit követi, ha StringComparison.CurrentCulture, StringComparison.CurrentCultureIgnoreCase értéket, vagy a CompareOptions felsorolás bármelyik tagját megadja, kivéve a CompareOptions.Ordinal vagy CompareOptions.OrdinalIgnoreCase, a Compare metódus megfelelő túlterhelésénél. A kultúra szempontjából érzékeny összehasonlítás általában megfelelő a rendezéshez, míg a sorrendi összehasonlítás nem. Általában a sorszám szerinti összehasonlítás alkalmas annak meghatározására, hogy két karakterlánc megegyezik-e (vagyis az azonosság meghatározására), míg a kultúrafüggő összehasonlítás nem.

Az alábbi példa a kultúra-érzékeny és az ordinális összehasonlítás közötti különbséget mutatja be. A példa három sztringet értékel ki: "Apple", "Æble" és "AEble", az ordinális összehasonlítást és a da-DK és az en-US kultúrák konvencióit használva (amelyek mindegyike az alapértelmezett kultúra a Compare metódus meghívásának időpontjában). Mivel a dán nyelv az "Æ" karaktert egyéni betűként kezeli, és a "Z" után rendezi az ábécében, a "Æble" sztring nagyobb, mint az "Apple". A "Æble" azonban nem egyenértékű az "AEble"-sel, így az "Æble" is nagyobb, mint az "AEble". Az USA-beli kultúra nem tartalmazza az "Æ" betűt, hanem az "AE" betűvel egyenértékűként kezeli, ami megmagyarázza, hogy az "Æble" miért kisebb, mint az "Apple", de egyenlő az "AEble"-sel. A rendezési összehasonlítás viszont az "Apple"-t kisebbnek tekinti, mint az "Æble"-t, míg az "Æble"-t nagyobbnak az "AEble"-nél.

using System;
using System.Globalization;
using System.Threading;

public class CompareStringSample
{
   public static void Main()
   {
      string str1 = "Apple";
      string str2 = "Æble"; 
      string str3 = "AEble";
      
      // Set the current culture to Danish in Denmark.
      Thread.CurrentThread.CurrentCulture = new CultureInfo("da-DK");
      Console.WriteLine("Current culture: {0}", 
                        CultureInfo.CurrentCulture.Name);
      Console.WriteLine("Comparison of {0} with {1}: {2}", 
                        str1, str2, String.Compare(str1, str2));
      Console.WriteLine("Comparison of {0} with {1}: {2}\n", 
                        str2, str3, String.Compare(str2, str3));
      
      // Set the current culture to English in the U.S.
      Thread.CurrentThread.CurrentCulture = new CultureInfo("en-US");
      Console.WriteLine("Current culture: {0}", 
                        CultureInfo.CurrentCulture.Name);
      Console.WriteLine("Comparison of {0} with {1}: {2}", 
                        str1, str2, String.Compare(str1, str2));
      Console.WriteLine("Comparison of {0} with {1}: {2}\n", 
                        str2, str3, String.Compare(str2, str3));
      
      // Perform an ordinal comparison.
      Console.WriteLine("Ordinal comparison");
      Console.WriteLine("Comparison of {0} with {1}: {2}", 
                        str1, str2, 
                        String.Compare(str1, str2, StringComparison.Ordinal));
      Console.WriteLine("Comparison of {0} with {1}: {2}", 
                        str2, str3, 
                        String.Compare(str2, str3, StringComparison.Ordinal));
   }
}
// The example displays the following output:
//       Current culture: da-DK
//       Comparison of Apple with Æble: -1
//       Comparison of Æble with AEble: 1
//       
//       Current culture: en-US
//       Comparison of Apple with Æble: 1
//       Comparison of Æble with AEble: 0
//       
//       Ordinal comparison
//       Comparison of Apple with Æble: -133
//       Comparison of Æble with AEble: 133
open System
open System.Globalization
open System.Threading

let str1 = "Apple"
let str2 = "Æble"
let str3 = "AEble"

// Set the current culture to Danish in Denmark.
Thread.CurrentThread.CurrentCulture <- CultureInfo "da-DK"
printfn $"Current culture: {CultureInfo.CurrentCulture.Name}"
printfn $"Comparison of {str1} with {str2}: {String.Compare(str1, str2)}"
printfn $"Comparison of {str2} with {str3}: {String.Compare(str2, str3)}\n"

// Set the current culture to English in the U.S.
Thread.CurrentThread.CurrentCulture <- CultureInfo "en-US"
printfn $"Current culture: {CultureInfo.CurrentCulture.Name}"
printfn $"Comparison of {str1} with {str2}: {String.Compare(str1, str2)}"
printfn $"Comparison of {str2} with {str3}: {String.Compare(str2, str3)}\n"

// Perform an ordinal comparison.
printfn "Ordinal comparison"
printfn $"Comparison of {str1} with {str2}: {String.Compare(str1, str2, StringComparison.Ordinal)}"
printfn $"Comparison of {str2} with {str3}: {String.Compare(str2, str3, StringComparison.Ordinal)}"
// The example displays the following output:
//       Current culture: da-DK
//       Comparison of Apple with Æble: -1
//       Comparison of Æble with AEble: 1
//
//       Current culture: en-US
//       Comparison of Apple with Æble: 1
//       Comparison of Æble with AEble: 0
//
//       Ordinal comparison
//       Comparison of Apple with Æble: -133
//       Comparison of Æble with AEble: 133
Imports System.Globalization
Imports System.Threading

Public Module Example6
    Public Sub Main()
        Dim str1 As String = "Apple"
        Dim str2 As String = "Æble"
        Dim str3 As String = "AEble"

        ' Set the current culture to Danish in Denmark.
        Thread.CurrentThread.CurrentCulture = New CultureInfo("da-DK")
        Console.WriteLine("Current culture: {0}",
                        CultureInfo.CurrentCulture.Name)
        Console.WriteLine("Comparison of {0} with {1}: {2}",
                        str1, str2, String.Compare(str1, str2))
        Console.WriteLine("Comparison of {0} with {1}: {2}",
                        str2, str3, String.Compare(str2, str3))
        Console.WriteLine()

        ' Set the current culture to English in the U.S.
        Thread.CurrentThread.CurrentCulture = New CultureInfo("en-US")
        Console.WriteLine("Current culture: {0}",
                        CultureInfo.CurrentCulture.Name)
        Console.WriteLine("Comparison of {0} with {1}: {2}",
                        str1, str2, String.Compare(str1, str2))
        Console.WriteLine("Comparison of {0} with {1}: {2}",
                        str2, str3, String.Compare(str2, str3))
        Console.WriteLine()

        ' Perform an ordinal comparison.
        Console.WriteLine("Ordinal comparison")
        Console.WriteLine("Comparison of {0} with {1}: {2}",
                        str1, str2,
                        String.Compare(str1, str2, StringComparison.Ordinal))
        Console.WriteLine("Comparison of {0} with {1}: {2}",
                        str2, str3,
                        String.Compare(str2, str3, StringComparison.Ordinal))
    End Sub
End Module
' The example displays the following output:
'       Current culture: da-DK
'       Comparison of Apple with Æble: -1
'       Comparison of Æble with AEble: 1
'       
'       Current culture: en-US
'       Comparison of Apple with Æble: 1
'       Comparison of Æble with AEble: 0
'       
'       Ordinal comparison
'       Comparison of Apple with Æble: -133
'       Comparison of Æble with AEble: 133

A megfelelő rendezési vagy sztring-összehasonlító módszer kiválasztásához használja az alábbi általános irányelveket:

  • Ha azt szeretné, hogy a sztringek a felhasználó kultúrája alapján legyenek rendezve, akkor azokat a jelenlegi kultúra konvenciói alapján kell rendeznie. Ha a felhasználó kultúrája megváltozik, a rendezett sztringek sorrendje is ennek megfelelően változik. Egy szinonimaszótár-alkalmazásnak például mindig a felhasználó kultúrája alapján kell rendeznie a szavakat.

  • Ha azt szeretné, hogy a karakterláncok egy adott kultúra konvenciói alapján legyenek rendezve, akkor azokat úgy kell rendezni, hogy egy CultureInfo objektumot ad meg, amely az adott kultúrát képviseli egy összehasonlítási módszerhez. Például egy olyan alkalmazásban, amely egy adott nyelvet tanít a diákoknak, karaktersorokat szeretne rendezni az adott nyelvet beszélő kultúrák egyikének konvenciói alapján.

  • Ha azt szeretné, hogy a sztringek sorrendje a kultúrák között változatlan maradjon, akkor az invariáns kultúra konvenciói szerinti rendezést alkalmazzon, vagy használjon sorrendi összehasonlítást. A fájlok, folyamatok, mutexek vagy elnevezett csövek nevének rendszerezéséhez például egy sorrendi osztályozást használna.

  • Biztonsági döntéssel járó összehasonlításhoz (például hogy a felhasználónév érvényes-e) mindig végezzen egy sorszámos tesztet az egyenlőség érdekében a Equals metódus túlterhelésének meghívásával.

Megjegyzés:

A sztring-összehasonlításban használt kultúraérzékeny rendezési és burkolati szabályok a Unicode Standardnak az alapul szolgáló operációs rendszer által támogatott verziójától függenek.

A szavak, karakterláncok és sorrendi szabályokkal kapcsolatos további információkért tekintse meg a System.Globalization.CompareOptions témakört. Az egyes szabályok használatára vonatkozó további javaslatokért tekintse meg a sztringek használatának ajánlott eljárásait.

Általában nem hívhat sztring-összehasonlító módszereket, például Compare közvetlenül a sztringek rendezési sorrendjének meghatározásához. Ehelyett az összehasonlítási metódusokat olyan rendezési módszerekkel hívjuk meg, mint a Array.Sort vagy List<T>.Sorta . Az alábbi példa négy különböző rendezési műveletet hajt végre (szórendezés az aktuális kultúrával, szórendezés az invariáns kultúrával, sorrendi rendezés és sztringsorrendezés az invariáns kultúrával) anélkül, hogy explicit módon meghívna egy sztring-összehasonlító módszert, bár megadják a használni kívánt összehasonlítás típusát. Vegye figyelembe, hogy minden rendezési típus egyedi sorrendet hoz létre a sztringek között a tömbben.

using System;
using System.Collections;
using System.Collections.Generic;
using System.Globalization;
 
public class Example
{
   public static void Main()
   {
      string[] strings = { "coop", "co-op", "cooperative", 
                           "co\u00ADoperative", "cœur", "coeur" };

      // Perform a word sort using the current (en-US) culture.
      string[] current = new string[strings.Length]; 
      strings.CopyTo(current, 0); 
      Array.Sort(current, StringComparer.CurrentCulture);

      // Perform a word sort using the invariant culture.
      string[] invariant = new string[strings.Length];
      strings.CopyTo(invariant, 0); 
      Array.Sort(invariant, StringComparer.InvariantCulture);

      // Perform an ordinal sort.
      string[] ordinal = new string[strings.Length];
      strings.CopyTo(ordinal, 0); 
      Array.Sort(ordinal, StringComparer.Ordinal);

      // Perform a string sort using the current culture.
      string[] stringSort = new string[strings.Length];
      strings.CopyTo(stringSort, 0); 
      Array.Sort(stringSort, new SCompare());

      // Display array values
      Console.WriteLine("{0,13} {1,13} {2,15} {3,13} {4,13}\n", 
                        "Original", "Word Sort", "Invariant Word", 
                        "Ordinal Sort", "String Sort");
      for (int ctr = 0; ctr < strings.Length; ctr++)
         Console.WriteLine("{0,13} {1,13} {2,15} {3,13} {4,13}", 
                           strings[ctr], current[ctr], invariant[ctr], 
                           ordinal[ctr], stringSort[ctr] );          
   }
}

// IComparer<String> implementation to perform string sort.
internal class SCompare : IComparer<String>
{
   public int Compare(string x, string y)
   {
      return CultureInfo.CurrentCulture.CompareInfo.Compare(x, y, CompareOptions.StringSort);
   }
}
// The example displays the following output:
//         Original     Word Sort  Invariant Word  Ordinal Sort   String Sort
//    
//             coop          cœur            cœur         co-op         co-op
//            co-op         coeur           coeur         coeur          cœur
//      cooperative          coop            coop          coop         coeur
//     co­operative         co-op           co-op   cooperative          coop
//             cœur   cooperative     cooperative  co­operative   cooperative
//            coeur  co­operative    co­operative          cœur  co­operative
open System
open System.Collections.Generic
open System.Globalization

// IComparer<String> implementation to perform string sort using an F# object expression.
let scompare = 
    { new IComparer<String> with
        member _.Compare(x, y) =
            CultureInfo.CurrentCulture.CompareInfo.Compare(x, y, CompareOptions.StringSort) }

let strings = [| "coop"; "co-op"; "cooperative"; "co\u00ADoperative"; "cœur"; "coeur" |]

// Perform a word sort using the current (en-US) culture.
let current = Array.copy strings
Array.Sort(current, StringComparer.CurrentCulture)

// Perform a word sort using the invariant culture.
let invariant = Array.copy strings
Array.Sort(invariant, StringComparer.InvariantCulture)

// Perform an ordinal sort.
let ordinal = Array.copy strings
Array.Sort(ordinal, StringComparer.Ordinal)

// Perform a string sort using the current culture.
let stringSort = Array.copy strings
Array.Sort(stringSort, scompare)

// Display array values
printfn "%13s %13s %15s %13s %13s\n" "Original" "Word Sort" "Invariant Word" "Ordinal Sort" "String Sort"
for i = 0 to strings.Length - 1 do
    printfn "%13s %13s %15s %13s %13s\n" strings[i] current[i] invariant[i] ordinal[i] stringSort[i]

// The example displays the following output:
//         Original     Word Sort  Invariant Word  Ordinal Sort   String Sort
//
//             coop          cœur            cœur         co-op         co-op
//            co-op         coeur           coeur         coeur          cœur
//      cooperative          coop            coop          coop         coeur
//     co­operative         co-op           co-op   cooperative          coop
//             cœur   cooperative     cooperative  co­operative   cooperative
//            coeur  co­operative    co­operative          cœur  co­operative
Imports System.Collections
Imports System.Collections.Generic
Imports System.Globalization

Module Example4
    Public Sub Main()
        Dim strings() As String = {"coop", "co-op", "cooperative",
                                  "co" + ChrW(&HAD) + "operative",
                                  "cœur", "coeur"}

        ' Perform a word sort using the current (en-US) culture.
        Dim current(strings.Length - 1) As String
        strings.CopyTo(current, 0)
        Array.Sort(current, StringComparer.CurrentCulture)

        ' Perform a word sort using the invariant culture.
        Dim invariant(strings.Length - 1) As String
        strings.CopyTo(invariant, 0)
        Array.Sort(invariant, StringComparer.InvariantCulture)

        ' Perform an ordinal sort.
        Dim ordinal(strings.Length - 1) As String
        strings.CopyTo(ordinal, 0)
        Array.Sort(ordinal, StringComparer.Ordinal)

        ' Perform a string sort using the current culture.
        Dim stringSort(strings.Length - 1) As String
        strings.CopyTo(stringSort, 0)
        Array.Sort(stringSort, New SCompare())

        ' Display array values
        Console.WriteLine("{0,13} {1,13} {2,15} {3,13} {4,13}",
                        "Original", "Word Sort", "Invariant Word",
                        "Ordinal Sort", "String Sort")
        Console.WriteLine()

        For ctr As Integer = 0 To strings.Length - 1
            Console.WriteLine("{0,13} {1,13} {2,15} {3,13} {4,13}",
                           strings(ctr), current(ctr), invariant(ctr),
                           ordinal(ctr), stringSort(ctr))
        Next
    End Sub
End Module

' IComparer<String> implementation to perform string sort.
Friend Class SCompare : Implements IComparer(Of String)
   Public Function Compare(x As String, y As String) As Integer _
                   Implements IComparer(Of String).Compare
      Return CultureInfo.CurrentCulture.CompareInfo.Compare(x, y, CompareOptions.StringSort)
   End Function
End Class
' The example displays the following output:
'         Original     Word Sort  Invariant Word  Ordinal Sort   String Sort
'    
'             coop          cœur            cœur         co-op         co-op
'            co-op         coeur           coeur         coeur          cœur
'      cooperative          coop            coop          coop         coeur
'     co­operative         co-op           co-op   cooperative          coop
'             cœur   cooperative     cooperative  co­operative   cooperative
'            coeur  co­operative    co­operative          cœur  co­operative

Jótanács

A .NET a rendezési kulcsokat használja belsőleg a kulturálisan érzékeny karakterláncok összehasonlításának támogatására. A karakterlánc minden egyes karaktere több kategóriájú rendezési súlyozást kap, beleértve az ábécé, a kis- és nagybetű, valamint a diakritikus jellemzőket. Az osztály által SortKey képviselt rendezési kulcs adattárat biztosít a súlyok számára egy adott karakterlánchoz. Ha az alkalmazás nagy számú keresési vagy rendezési műveletet hajt végre ugyanazon a sztringkészleten, javíthatja a teljesítményét, ha rendezési kulcsokat hoz létre és tárol az összes használt sztringhez. Ha rendezési vagy összehasonlító műveletre van szükség, a sztringek helyett a rendezési kulcsokat kell használnia. További információért lásd a SortKey osztályt.

Ha nem ad meg sztringösszehasonlító konvenciót, olyan rendezési módszerek, mint például a Array.Sort(Array), kultúraérzékenyen és kis- és nagybetű érzékenyen rendezik a sztringeket. Az alábbi példa bemutatja, hogy az aktuális kultúra módosítása hogyan befolyásolja a tömb rendezett szövegeinek sorrendjét. Három karakterláncból álló tömböt hoz létre. Először az en-US értékre állítja a System.Threading.Thread.CurrentThread.CurrentCulture tulajdonságot, és meghívja a metódust Array.Sort(Array) . Az eredményként kapott rendezési sorrend az angol (Egyesült Államok) kultúra rendezési konvenciókon alapul. A példa ezután da-DK-ra állítja a System.Threading.Thread.CurrentThread.CurrentCulture tulajdonságot, és újra meghívja a metódust Array.Sort . Figyelje meg, hogy az eredményként kapott rendezési sorrend miben különbözik az USA-beli eredményektől, mivel a dán (Dánia) rendezési konvencióit használja.

using System;
using System.Globalization;
using System.Threading;

public class ArraySort
{
   public static void Main(String[] args)
   {
      // Create and initialize a new array to store the strings.
      string[] stringArray = { "Apple", "Æble", "Zebra"};

      // Display the values of the array.
      Console.WriteLine( "The original string array:");
      PrintIndexAndValues(stringArray);

      // Set the CurrentCulture to "en-US".
      Thread.CurrentThread.CurrentCulture = new CultureInfo("en-US");
      // Sort the values of the array.
      Array.Sort(stringArray);

      // Display the values of the array.
      Console.WriteLine("After sorting for the culture \"en-US\":");
      PrintIndexAndValues(stringArray);

      // Set the CurrentCulture to "da-DK".
      Thread.CurrentThread.CurrentCulture = new CultureInfo("da-DK");
      // Sort the values of the Array.
      Array.Sort(stringArray);

      // Display the values of the array.
      Console.WriteLine("After sorting for the culture \"da-DK\":");
      PrintIndexAndValues(stringArray);
   }
   public static void PrintIndexAndValues(string[] myArray)
   {
      for (int i = myArray.GetLowerBound(0); i <=
            myArray.GetUpperBound(0); i++ )
         Console.WriteLine("[{0}]: {1}", i, myArray[i]);
      Console.WriteLine();
   }
}
// The example displays the following output:
//       The original string array:
//       [0]: Apple
//       [1]: Æble
//       [2]: Zebra
//
//       After sorting for the "en-US" culture:
//       [0]: Æble
//       [1]: Apple
//       [2]: Zebra
//
//       After sorting for the culture "da-DK":
//       [0]: Apple
//       [1]: Zebra
//       [2]: Æble
open System
open System.Globalization
open System.Threading

let printIndexAndValues (myArray: string[]) =
    for i = myArray.GetLowerBound 0 to myArray.GetUpperBound 0 do
        printfn $"[{i}]: {myArray[i]}" 
    printfn ""

// Create and initialize a new array to store the strings.
let stringArray = [| "Apple"; "Æble"; "Zebra" |]

// Display the values of the array.
printfn "The original string array:"
printIndexAndValues stringArray

// Set the CurrentCulture to "en-US".
Thread.CurrentThread.CurrentCulture <- CultureInfo "en-US"
// Sort the values of the array.
Array.Sort stringArray

// Display the values of the array.
printfn "After sorting for the culture \"en-US\":"
printIndexAndValues stringArray

// Set the CurrentCulture to "da-DK".
Thread.CurrentThread.CurrentCulture <- CultureInfo "da-DK"
// Sort the values of the Array.
Array.Sort stringArray

// Display the values of the array.
printfn "After sorting for the culture \"da-DK\":"
printIndexAndValues stringArray
// The example displays the following output:
//       The original string array:
//       [0]: Apple
//       [1]: Æble
//       [2]: Zebra
//
//       After sorting for the "en-US" culture:
//       [0]: Æble
//       [1]: Apple
//       [2]: Zebra
//
//       After sorting for the culture "da-DK":
//       [0]: Apple
//       [1]: Zebra
//       [2]: Æble
Imports System.Globalization
Imports System.IO
Imports System.Threading

Public Class TextToFile   
   Public Shared Sub Main()
      ' Creates and initializes a new array to store 
      ' these date/time objects.
      Dim stringArray() As String = { "Apple", "Æble", "Zebra"}
      
      ' Displays the values of the array.
      Console.WriteLine("The original string array:")
      PrintIndexAndValues(stringArray)
      
      ' Set the CurrentCulture to "en-US".
      Thread.CurrentThread.CurrentCulture = New CultureInfo("en-US")
      ' Sort the values of the Array.
      Array.Sort(stringArray)
      
      ' Display the values of the array.
      Console.WriteLine("After sorting for the ""en-US"" culture:")
      PrintIndexAndValues(stringArray)
      
      ' Set the CurrentCulture to "da-DK".
      Thread.CurrentThread.CurrentCulture = New CultureInfo("da-DK")
      ' Sort the values of the Array.
      Array.Sort(stringArray)
      
      ' Displays the values of the Array.
      Console.WriteLine("After sorting for the culture ""da-DK"":")
      PrintIndexAndValues(stringArray)
   End Sub

   Public Shared Sub PrintIndexAndValues(myArray() As String)
      For i As Integer = myArray.GetLowerBound(0) To myArray.GetUpperBound(0)
         Console.WriteLine("[{0}]: {1}", i, myArray(i))
      Next
      Console.WriteLine()
   End Sub 
End Class
' The example displays the following output:
'       The original string array:
'       [0]: Apple
'       [1]: Æble
'       [2]: Zebra
'       
'       After sorting for the "en-US" culture:
'       [0]: Æble
'       [1]: Apple
'       [2]: Zebra
'       
'       After sorting for the culture "da-DK":
'       [0]: Apple
'       [1]: Zebra
'       [2]: Æble

Warning

Ha a sztringek összehasonlításának elsődleges célja annak meghatározása, hogy egyenlőek-e, akkor hívja meg a metódust String.Equals . Általában a Equals használata ajánlott, ha rendezési sorrend összehasonlítást kell végezni. A String.Compare metódus elsősorban sztringek rendezésére szolgál.

A sztringkeresési metódusok, például String.StartsWith és String.IndexOf, kulturális szempontból érzékeny vagydinális sztring-összehasonlításokat is végezhetnek. Az alábbi példa a IndexOf módszer használatával bemutatja a sorszám szerinti és a kultúraérzékeny összehasonlítások közötti különbségeket. Egy kultúraérzékeny keresés, amelyben a jelenlegi kultúra angol (Egyesült Államok), úgy tekinti, hogy az "oe" részsztring megfelel az "œ" ligatúrának. Mivel a helyreállítható kötőjel (U+00AD) nulla szélességű karakter, a keresés a helyreállítható kötőjelet egyenértékűként String.Empty kezeli, és a sztring elején talál egyezést. A sorszámos keresés azonban egyik esetben sem talál egyezést.

using System;

public class Example
{
   public static void Main()
   {
      // Search for "oe" and "œu" in "œufs" and "oeufs".
      string s1 = "œufs";
      string s2 = "oeufs";
      FindInString(s1, "oe", StringComparison.CurrentCulture);
      FindInString(s1, "oe", StringComparison.Ordinal);
      FindInString(s2, "œu", StringComparison.CurrentCulture);
      FindInString(s2, "œu", StringComparison.Ordinal);
      Console.WriteLine();
      
      string s3 = "co\u00ADoperative";
      FindInString(s3, "\u00AD", StringComparison.CurrentCulture);
      FindInString(s3, "\u00AD", StringComparison.Ordinal);
   }

   private static void FindInString(string s, string substring, StringComparison options)
   {
      int result = s.IndexOf(substring, options);
      if (result != -1)
         Console.WriteLine("'{0}' found in {1} at position {2}", 
                           substring, s, result);
      else
         Console.WriteLine("'{0}' not found in {1}", 
                           substring, s);                                                  
   }
}
// The example displays the following output:
//       'oe' found in œufs at position 0
//       'oe' not found in œufs
//       'œu' found in oeufs at position 0
//       'œu' not found in oeufs
//       
//       '­' found in co­operative at position 0
//       '­' found in co­operative at position 2
open System

let findInString (s: string) (substring: string) (options: StringComparison) =
    let result = s.IndexOf(substring, options)
    if result <> -1 then
        printfn $"'{substring}' found in {s} at position {result}"
    else
        printfn $"'{substring}' not found in {s}"

// Search for "oe" and "œu" in "œufs" and "oeufs".
let s1 = "œufs"
let s2 = "oeufs"
findInString s1 "oe" StringComparison.CurrentCulture
findInString s1 "oe" StringComparison.Ordinal
findInString s2 "œu" StringComparison.CurrentCulture
findInString s2 "œu" StringComparison.Ordinal
printfn ""

let s3 = "co\u00ADoperative"
findInString s3 "\u00AD" StringComparison.CurrentCulture
findInString s3 "\u00AD" StringComparison.Ordinal

// The example displays the following output:
//       'oe' found in œufs at position 0
//       'oe' not found in œufs
//       'œu' found in oeufs at position 0
//       'œu' not found in oeufs
//
//       '­' found in co­operative at position 0
//       '­' found in co­operative at position 2
Module Example5
    Public Sub Main()
        ' Search for "oe" and "œu" in "œufs" and "oeufs".
        Dim s1 As String = "œufs"
        Dim s2 As String = "oeufs"
        FindInString(s1, "oe", StringComparison.CurrentCulture)
        FindInString(s1, "oe", StringComparison.Ordinal)
        FindInString(s2, "œu", StringComparison.CurrentCulture)
        FindInString(s2, "œu", StringComparison.Ordinal)
        Console.WriteLine()

        Dim softHyphen As String = ChrW(&HAD)
        Dim s3 As String = "co" + softHyphen + "operative"
        FindInString(s3, softHyphen, StringComparison.CurrentCulture)
        FindInString(s3, softHyphen, StringComparison.Ordinal)
    End Sub

    Private Sub FindInString(s As String, substring As String,
                            options As StringComparison)
        Dim result As Integer = s.IndexOf(substring, options)
        If result <> -1 Then
            Console.WriteLine("'{0}' found in {1} at position {2}",
                           substring, s, result)
        Else
            Console.WriteLine("'{0}' not found in {1}",
                           substring, s)
        End If
    End Sub
End Module
' The example displays the following output:
'       'oe' found in œufs at position 0
'       'oe' not found in œufs
'       'œu' found in oeufs at position 0
'       'œu' not found in oeufs
'       
'       '­' found in co­operative at position 0
'       '­' found in co­operative at position 2

Keresés sztringekben

A sztringkeresési módszerek( például String.StartsWith és String.IndexOf) kultúraérzékeny vagy sorszámú sztring-összehasonlításokat is végezhetnek annak megállapításához, hogy egy karakter vagy alsztring található-e egy adott sztringben.

Az String osztály keresési módszerei, amelyek egyedi karaktereket keresnek, mint például a IndexOf metódus, vagy karakterek egy csoportját, mint például a IndexOfAny metódus, mind ordális keresést hajtanak végre. Egy karakter kultúraérzékeny kereséséhez meg kell hívnia egy metódust CompareInfo, például CompareInfo.IndexOf(String, Char) vagy CompareInfo.LastIndexOf(String, Char). Vegye figyelembe, hogy a karakter sorszám- és kultúraérzékeny összehasonlítást használó keresésének eredményei nagyon eltérőek lehetnek. Egy előre összeállított Unicode-karakter, például az "Æ" ligatúra (U+00C6) keresése az adott kultúrától függően megfelelhet annak összetevői helyes sorrendben történő előfordulásának, például az "AE" (U+0041 U+0045). Az alábbi példa bemutatja az String.IndexOf(Char) és CompareInfo.IndexOf(String, Char) metódusok közötti különbséget, amikor egyetlen karaktert keresünk. Az "æ" betűkapcsolat (U+00E6) megtalálható a "aerial" sztringben, amikor az en-US kultúra konvencióit használjuk, de nem található meg sem a da-DK kultúra konvencióit használva, sem sorszám-összehasonlítás végrehajtásakor.

using System;
using System.Globalization;

public class Example
{
   public static void Main()
   {
      String[] cultureNames = { "da-DK", "en-US" };
      CompareInfo ci;
      String str = "aerial";
      Char ch = 'æ';  // U+00E6
      
      Console.Write("Ordinal comparison -- ");
      Console.WriteLine("Position of '{0}' in {1}: {2}", ch, str,
                        str.IndexOf(ch));
      
      foreach (var cultureName in cultureNames) {
         ci = CultureInfo.CreateSpecificCulture(cultureName).CompareInfo;
         Console.Write("{0} cultural comparison -- ", cultureName);
         Console.WriteLine("Position of '{0}' in {1}: {2}", ch, str,
                           ci.IndexOf(str, ch));
      }
   }
}
// The example displays the following output:
//       Ordinal comparison -- Position of 'æ' in aerial: -1
//       da-DK cultural comparison -- Position of 'æ' in aerial: -1
//       en-US cultural comparison -- Position of 'æ' in aerial: 0
open System.Globalization

let cultureNames = [| "da-DK"; "en-US" |]
let str = "aerial"
let ch = 'æ'  // U+00E6

printf "Ordinal comparison -- "
printfn $"Position of '{ch}' in {str}: {str.IndexOf ch}"
                  
for cultureName in cultureNames do
    let ci = CultureInfo.CreateSpecificCulture(cultureName).CompareInfo
    printf $"{cultureName} cultural comparison -- "
    printfn $"Position of '{ch}' in {str}: {ci.IndexOf(str, ch)}"
// The example displays the following output:
//       Ordinal comparison -- Position of 'æ' in aerial: -1
//       da-DK cultural comparison -- Position of 'æ' in aerial: -1
//       en-US cultural comparison -- Position of 'æ' in aerial: 0
Imports System.Globalization

Module Example19
    Public Sub Main()
        Dim cultureNames() As String = {"da-DK", "en-US"}
        Dim ci As CompareInfo
        Dim str As String = "aerial"
        Dim ch As Char = "æ"c  ' U+00E6

        Console.Write("Ordinal comparison -- ")
        Console.WriteLine("Position of '{0}' in {1}: {2}", ch, str,
                        str.IndexOf(ch))

        For Each cultureName In cultureNames
            ci = CultureInfo.CreateSpecificCulture(cultureName).CompareInfo
            Console.Write("{0} cultural comparison -- ", cultureName)
            Console.WriteLine("Position of '{0}' in {1}: {2}", ch, str,
                           ci.IndexOf(str, ch))
        Next
    End Sub
End Module
' The example displays the following output:
'       Ordinal comparison -- Position of 'æ' in aerial: -1
'       da-DK cultural comparison -- Position of 'æ' in aerial: -1
'       en-US cultural comparison -- Position of 'æ' in aerial: 0

A String osztálymódszerek, amelyek karakterláncot keresnek a karakter helyett, kulturális szempontból érzékeny keresést hajtanak végre, ha a keresési beállításokat nem adják meg explicit módon egy StringComparison típusú paraméter által. Az egyetlen kivétel az Contains, amely egy sorszámos keresést hajt végre.

Egyenlőség tesztelése

A String.Compare metódus segítségével meghatározhatja két karakterlánc kapcsolatát a rendezési sorrendben. Ez általában egy kultúraérzékeny művelet. Ezzel szemben hívja meg az String.Equals metódust az egyenlőség tesztelésére. Mivel az egyenlőségi teszt általában összehasonlítja a felhasználói bemenetet valamilyen ismert sztringgel, például érvényes felhasználónévvel, jelszóval vagy fájlrendszer elérési úttal, ez általában egy sorszámú művelet.

Warning

Az egyenlőséget tesztelni lehet a String.Compare metódus meghívásával és annak meghatározásával, hogy a visszatérési érték nulla-e. Ez a gyakorlat azonban nem ajánlott. Annak megállapításához, hogy két karakterlánc egyenlő-e, meg kell hívnia a String.Equals metódus egyik túlterhelését. A hívás elsődleges túlterhelése a példány Equals(String, StringComparison) metódus vagy a statikus Equals(String, String, StringComparison) metódus legyen, mivel mindkét metódus tartalmaz egy System.StringComparison paramétert, amely explicit módon meghatározza az összehasonlítás típusát.

Az alábbi példa szemlélteti a veszélyt, amely abból adódik, ha az egyenlőség vizsgálatakor kulturális szempontból érzékeny összehasonlítást végzünk, amikor inkább sorszám szerinti összehasonlítást kellene alkalmazni. Ebben az esetben a kód célja, hogy megtiltsa a fájlrendszer hozzáférését a "FILE://" vagy a "file://" kezdetű URL-címekről az URL-cím elejének kis- és nagybetűs összehasonlításával a "FILE://" sztringgel. Ha azonban a "file://" kezdetű URL-címen a török (törökországi) kultúra használatával végeznek kultúraérzékeny összehasonlítást, az egyenlőségre vonatkozó összehasonlítás meghiúsul, mivel az "i" kisbetűs török nagybetűs megfelelője "I" helyett "İ". Ennek eredményeképpen a fájlrendszerhez való hozzáférés akaratlanul engedélyezett. Másrészről, ha sorszám szerinti összehasonlítást végez, az egyenlőség vizsgálata sikeres, és a fájlrendszerhez való hozzáférés megtagadásra kerül.

using System;
using System.Globalization;
using System.Threading;

public class Example
{
   public static void Main()
   {
      Thread.CurrentThread.CurrentCulture = CultureInfo.CreateSpecificCulture("tr-TR");      

      string filePath = "file://c:/notes.txt";
      
      Console.WriteLine("Culture-sensitive test for equality:");
      if (!TestForEquality(filePath, StringComparison.CurrentCultureIgnoreCase))
         Console.WriteLine("Access to {0} is allowed.", filePath);
      else
         Console.WriteLine("Access to {0} is not allowed.", filePath);
      
      Console.WriteLine("\nOrdinal test for equality:");
      if (!TestForEquality(filePath, StringComparison.OrdinalIgnoreCase))
         Console.WriteLine("Access to {0} is allowed.", filePath);
      else
         Console.WriteLine("Access to {0} is not allowed.", filePath);
   }

   private static bool TestForEquality(string str, StringComparison cmp)
   {
      int position = str.IndexOf("://");
      if (position < 0) return false;

      string substring = str.Substring(0, position);  
      return substring.Equals("FILE", cmp);
   }
}
// The example displays the following output:
//       Culture-sensitive test for equality:
//       Access to file://c:/notes.txt is allowed.
//       
//       Ordinal test for equality:
//       Access to file://c:/notes.txt is not allowed.
open System
open System.Globalization
open System.Threading

let testForEquality (str: string) (cmp: StringComparison) =
    let position = str.IndexOf "://"
    if position < 0 then false
    else
        let substring = str.Substring(0, position)
        substring.Equals("FILE", cmp)

Thread.CurrentThread.CurrentCulture <- CultureInfo.CreateSpecificCulture "tr-TR"

let filePath = "file://c:/notes.txt"

printfn "Culture-sensitive test for equality:"
if not (testForEquality filePath StringComparison.CurrentCultureIgnoreCase) then
    printfn $"Access to {filePath} is allowed."
else
    printfn $"Access to {filePath} is not allowed."

printfn "\nOrdinal test for equality:"
if not (testForEquality filePath StringComparison.OrdinalIgnoreCase) then
    printfn $"Access to {filePath} is allowed."
else
    printfn $"Access to {filePath} is not allowed."

// The example displays the following output:
//       Culture-sensitive test for equality:
//       Access to file://c:/notes.txt is allowed.
//
//       Ordinal test for equality:
//       Access to file://c:/notes.txt is not allowed.
Imports System.Globalization
Imports System.Threading

Module Example7
    Public Sub Main()
        Thread.CurrentThread.CurrentCulture = CultureInfo.CreateSpecificCulture("tr-TR")

        Dim filePath As String = "file://c:/notes.txt"

        Console.WriteLine("Culture-sensitive test for equality:")
        If Not TestForEquality(filePath, StringComparison.CurrentCultureIgnoreCase) Then
            Console.WriteLine("Access to {0} is allowed.", filePath)
        Else
            Console.WriteLine("Access to {0} is not allowed.", filePath)
        End If
        Console.WriteLine()

        Console.WriteLine("Ordinal test for equality:")
        If Not TestForEquality(filePath, StringComparison.OrdinalIgnoreCase) Then
            Console.WriteLine("Access to {0} is allowed.", filePath)
        Else
            Console.WriteLine("Access to {0} is not allowed.", filePath)
        End If
    End Sub

    Private Function TestForEquality(str As String, cmp As StringComparison) As Boolean
        Dim position As Integer = str.IndexOf("://")
        If position < 0 Then Return False

        Dim substring As String = str.Substring(0, position)
        Return substring.Equals("FILE", cmp)
    End Function
End Module
' The example displays the following output:
'       Culture-sensitive test for equality:
'       Access to file://c:/notes.txt is allowed.
'       
'       Ordinal test for equality:
'       Access to file://c:/notes.txt is not allowed.

Normalizálás

Egyes Unicode-karakterek több reprezentációval rendelkeznek. Az alábbi kódpontok bármelyike például a "ắ" betűt jelölheti:

  • U+1EAF
  • U+0103 U+0301
  • U+0061 U+0306 U+0301

Egyetlen karakter több ábrázolása bonyolítja a keresést, a rendezést, az egyeztetést és az egyéb sztringműveleteket.

A Unicode szabvány egy normalizálás nevű folyamatot határoz meg, amely egy Unicode-karakter egy bináris reprezentációját adja vissza a megfelelő bináris reprezentációkhoz. A normalizálás több algoritmust, úgynevezett normalizálási űrlapot is használhat, amelyek különböző szabályokat követnek. A .NET támogatja a C, D, KC és KD Unicode normalizálási űrlapokat. Ha a szövegláncok azonos normalizálási formára történő normalizálása megtörtént, akkor ordinális összehasonlítással hasonlíthatók össze.

Az ordinális összehasonlítás az egyes sztringekben lévő megfelelő Char objektumok Unicode skaláris értékének bináris összehasonlítása. Az String osztály számos olyan metódust tartalmaz, amelyek képesek a sorszámok összehasonlítására, beleértve a következőket:

A metódus meghívásával String.IsNormalized() meghatározhatja, hogy egy sztring normalizálva van-e a C normalizálási űrlapra, vagy meghívhatja a String.IsNormalized(NormalizationForm) metódust annak megállapításához, hogy a sztring egy adott normalizálási űrlapra van-e normalizálva. Meghívhatja azt a String.Normalize() metódust is, amely egy sztringet c normalizálási űrlapmá alakít, vagy meghívhatja a String.Normalize(NormalizationForm) metódust, hogy egy sztringet egy megadott normalizálási űrlapmá alakítson. A sztringek normalizálásával és összehasonlításával kapcsolatos részletes információkért tekintse meg a Normalize() és a Normalize(NormalizationForm) metódust.

Az alábbi egyszerű példa a sztring normalizálását szemlélteti. A "ố" betűt három különböző módon határozza meg három különböző sztringben, és egy sorszámos összehasonlítást használ az egyenlőséghez annak megállapításához, hogy az egyes sztringek eltérnek a másik két sztringtől. Ezután átalakítja az egyes sztringeket a támogatott normalizálási űrlapokra, és ismét végrehajtja az egyes sztringek sorszám szerinti összehasonlítását egy megadott normalizálási űrlapon. Minden esetben a második egyenlőségi teszt azt mutatja, hogy a karakterláncok egyenlőek.

using System;
using System.Globalization;
using System.IO;
using System.Text;

public class Example
{
   private static StreamWriter sw;
   
   public static void Main()
   {
      sw = new StreamWriter(@".\TestNorm1.txt");

      // Define three versions of the same word. 
      string s1 = "sống";        // create word with U+1ED1
      string s2 = "s\u00F4\u0301ng";
      string s3 = "so\u0302\u0301ng";

      TestForEquality(s1, s2, s3);      
      sw.WriteLine();

      // Normalize and compare strings using each normalization form.
      foreach (string formName in Enum.GetNames(typeof(NormalizationForm)))
      {
         sw.WriteLine("Normalization {0}:\n", formName); 
         NormalizationForm nf = (NormalizationForm) Enum.Parse(typeof(NormalizationForm), formName);
         string[] sn = NormalizeStrings(nf, s1, s2, s3);
         TestForEquality(sn);           
         sw.WriteLine("\n");                                        
      }
      
      sw.Close();   
   }

   private static void TestForEquality(params string[] words)
   {
      for (int ctr = 0; ctr <= words.Length - 2; ctr++)
         for (int ctr2 = ctr + 1; ctr2 <= words.Length - 1; ctr2++) 
            sw.WriteLine("{0} ({1}) = {2} ({3}): {4}", 
                         words[ctr], ShowBytes(words[ctr]),
                         words[ctr2], ShowBytes(words[ctr2]),
                         words[ctr].Equals(words[ctr2], StringComparison.Ordinal));
   }

   private static string ShowBytes(string str)
   {
      string result = null;
      foreach (var ch in str)
         result += $"{(ushort)ch:X4} ";
      return result.Trim();            
   } 
   
   private static string[] NormalizeStrings(NormalizationForm nf, params string[] words)
   {
      for (int ctr = 0; ctr < words.Length; ctr++)
         if (!words[ctr].IsNormalized(nf))
            words[ctr] = words[ctr].Normalize(nf); 
      return words;   
   }
}
// The example displays the following output:
//       sống (0073 1ED1 006E 0067) = sống (0073 00F4 0301 006E 0067): False
//       sống (0073 1ED1 006E 0067) = sống (0073 006F 0302 0301 006E 0067): False
//       sống (0073 00F4 0301 006E 0067) = sống (0073 006F 0302 0301 006E 0067): False
//       
//       Normalization FormC:
//       
//       sống (0073 1ED1 006E 0067) = sống (0073 1ED1 006E 0067): True
//       sống (0073 1ED1 006E 0067) = sống (0073 1ED1 006E 0067): True
//       sống (0073 1ED1 006E 0067) = sống (0073 1ED1 006E 0067): True
//       
//       
//       Normalization FormD:
//       
//       sống (0073 006F 0302 0301 006E 0067) = sống (0073 006F 0302 0301 006E 0067): True
//       sống (0073 006F 0302 0301 006E 0067) = sống (0073 006F 0302 0301 006E 0067): True
//       sống (0073 006F 0302 0301 006E 0067) = sống (0073 006F 0302 0301 006E 0067): True
//       
//       
//       Normalization FormKC:
//       
//       sống (0073 1ED1 006E 0067) = sống (0073 1ED1 006E 0067): True
//       sống (0073 1ED1 006E 0067) = sống (0073 1ED1 006E 0067): True
//       sống (0073 1ED1 006E 0067) = sống (0073 1ED1 006E 0067): True
//       
//       
//       Normalization FormKD:
//       
//       sống (0073 006F 0302 0301 006E 0067) = sống (0073 006F 0302 0301 006E 0067): True
//       sống (0073 006F 0302 0301 006E 0067) = sống (0073 006F 0302 0301 006E 0067): True
//       sống (0073 006F 0302 0301 006E 0067) = sống (0073 006F 0302 0301 006E 0067): True
open System
open System.IO
open System.Text

do
    use sw = new StreamWriter(@".\TestNorm1.txt")

    let showBytes (str: string) =
        let mutable result = ""
        for ch in str do
            result <- result + $"{uint16 ch:X4} "
        result.Trim()
    
    let testForEquality (words: string[]) =
        for ctr = 0 to words.Length - 2 do
            for ctr2 = ctr + 1 to words.Length - 1 do
                sw.WriteLine("{0} ({1}) = {2} ({3}): {4}",
                            words[ctr], showBytes(words[ctr]),
                            words[ctr2], showBytes(words[ctr2]),
                            words[ctr].Equals(words[ctr2], StringComparison.Ordinal))

    let normalizeStrings nf (words: string[]) =
        for i = 0 to words.Length - 1 do
            if not (words[i].IsNormalized nf) then
                words[i] <- words[i].Normalize nf
        words

    // Define three versions of the same word.
    let s1 = "sống"        // create word with U+1ED1
    let s2 = "s\u00F4\u0301ng"
    let s3 = "so\u0302\u0301ng"

    testForEquality [| s1; s2; s3 |]
    sw.WriteLine()

    // Normalize and compare strings using each normalization form.
    for formName in Enum.GetNames typeof<NormalizationForm> do
        sw.WriteLine("Normalization {0}:\n", formName)
        let nf = Enum.Parse(typeof<NormalizationForm>, formName) :?> NormalizationForm
        let sn = normalizeStrings nf [| s1; s2; s3|]
        testForEquality sn
        sw.WriteLine "\n"

// The example displays the following output:
//       sống (0073 1ED1 006E 0067) = sống (0073 00F4 0301 006E 0067): False
//       sống (0073 1ED1 006E 0067) = sống (0073 006F 0302 0301 006E 0067): False
//       sống (0073 00F4 0301 006E 0067) = sống (0073 006F 0302 0301 006E 0067): False
//
//       Normalization FormC:
//
//       sống (0073 1ED1 006E 0067) = sống (0073 1ED1 006E 0067): True
//       sống (0073 1ED1 006E 0067) = sống (0073 1ED1 006E 0067): True
//       sống (0073 1ED1 006E 0067) = sống (0073 1ED1 006E 0067): True
//
//
//       Normalization FormD:
//
//       sống (0073 006F 0302 0301 006E 0067) = sống (0073 006F 0302 0301 006E 0067): True
//       sống (0073 006F 0302 0301 006E 0067) = sống (0073 006F 0302 0301 006E 0067): True
//       sống (0073 006F 0302 0301 006E 0067) = sống (0073 006F 0302 0301 006E 0067): True
//
//
//       Normalization FormKC:
//
//       sống (0073 1ED1 006E 0067) = sống (0073 1ED1 006E 0067): True
//       sống (0073 1ED1 006E 0067) = sống (0073 1ED1 006E 0067): True
//       sống (0073 1ED1 006E 0067) = sống (0073 1ED1 006E 0067): True
//
//
//       Normalization FormKD:
//
//       sống (0073 006F 0302 0301 006E 0067) = sống (0073 006F 0302 0301 006E 0067): True
//       sống (0073 006F 0302 0301 006E 0067) = sống (0073 006F 0302 0301 006E 0067): True
//       sống (0073 006F 0302 0301 006E 0067) = sống (0073 006F 0302 0301 006E 0067): True
Imports System.Globalization
Imports System.IO
Imports System.Text

Module Example16
    Private sw As StreamWriter

    Public Sub Main()
        sw = New StreamWriter(".\TestNorm1.txt")

        ' Define three versions of the same word. 
        Dim s1 As String = "sống"        ' create word with U+1ED1
        Dim s2 As String = "s" + ChrW(&HF4) + ChrW(&H301) + "ng"
        Dim s3 As String = "so" + ChrW(&H302) + ChrW(&H301) + "ng"

        TestForEquality(s1, s2, s3)
        sw.WriteLine()

        ' Normalize and compare strings using each normalization form.
        For Each formName In [Enum].GetNames(GetType(NormalizationForm))
            sw.WriteLine("Normalization {0}:", formName)
            Dim nf As NormalizationForm = CType([Enum].Parse(GetType(NormalizationForm), formName),
                                             NormalizationForm)
            Dim sn() As String = NormalizeStrings(nf, s1, s2, s3)
            TestForEquality(sn)
            sw.WriteLine(vbCrLf)
        Next

        sw.Close()
    End Sub

    Private Sub TestForEquality(ParamArray words As String())
        For ctr As Integer = 0 To words.Length - 2
            For ctr2 As Integer = ctr + 1 To words.Length - 1
                sw.WriteLine("{0} ({1}) = {2} ({3}): {4}",
                         words(ctr), ShowBytes(words(ctr)),
                         words(ctr2), ShowBytes(words(ctr2)),
                         words(ctr).Equals(words(ctr2), StringComparison.Ordinal))
            Next
        Next
    End Sub

    Private Function ShowBytes(str As String) As String
        Dim result As String = Nothing
        For Each ch In str
            result += String.Format("{0} ", Convert.ToUInt16(ch).ToString("X4"))
        Next
        Return result.Trim()
    End Function

    Private Function NormalizeStrings(nf As NormalizationForm, ParamArray words() As String) As String()
        For ctr As Integer = 0 To words.Length - 1
            If Not words(ctr).IsNormalized(nf) Then
                words(ctr) = words(ctr).Normalize(nf)
            End If
        Next
        Return words
    End Function
End Module
' The example displays the following output:
'       sống (0073 1ED1 006E 0067) = sống (0073 00F4 0301 006E 0067): False
'       sống (0073 1ED1 006E 0067) = sống (0073 006F 0302 0301 006E 0067): False
'       sống (0073 00F4 0301 006E 0067) = sống (0073 006F 0302 0301 006E 0067): False
'       
'       Normalization FormC:
'       
'       sống (0073 1ED1 006E 0067) = sống (0073 1ED1 006E 0067): True
'       sống (0073 1ED1 006E 0067) = sống (0073 1ED1 006E 0067): True
'       sống (0073 1ED1 006E 0067) = sống (0073 1ED1 006E 0067): True
'       
'       
'       Normalization FormD:
'       
'       sống (0073 006F 0302 0301 006E 0067) = sống (0073 006F 0302 0301 006E 0067): True
'       sống (0073 006F 0302 0301 006E 0067) = sống (0073 006F 0302 0301 006E 0067): True
'       sống (0073 006F 0302 0301 006E 0067) = sống (0073 006F 0302 0301 006E 0067): True
'       
'       
'       Normalization FormKC:
'       
'       sống (0073 1ED1 006E 0067) = sống (0073 1ED1 006E 0067): True
'       sống (0073 1ED1 006E 0067) = sống (0073 1ED1 006E 0067): True
'       sống (0073 1ED1 006E 0067) = sống (0073 1ED1 006E 0067): True
'       
'       
'       Normalization FormKD:
'       
'       sống (0073 006F 0302 0301 006E 0067) = sống (0073 006F 0302 0301 006E 0067): True
'       sống (0073 006F 0302 0301 006E 0067) = sống (0073 006F 0302 0301 006E 0067): True
'       sống (0073 006F 0302 0301 006E 0067) = sống (0073 006F 0302 0301 006E 0067): True

A normalizálási és normalizálási űrlapokkal kapcsolatos további információkért lásd System.Text.NormalizationForma Unicode Standard 15. mellékletét: Unicode Normalization Forms and the Normalization FAQ on the unicode.org website.

Sztringműveletek kategória szerint

Az String osztály lehetővé teszi a tagok számára a sztringek összehasonlítását, a sztringek egyenlőségének tesztelését, a karakterláncok karaktereinek vagy alsztringjeinek keresését, a sztringek módosítását, a sztringek részsztringjeinek kinyerését, a sztringek kombinálását, az értékek formázását, a sztringek másolását és a sztring normalizálását.

Sztringek összehasonlítása

A sztringeket a következő String módszerekkel hasonlíthatja össze a rendezési sorrendben elfoglalt relatív pozíciójuk meghatározásához:

  • Compare Egy egész számot ad vissza, amely egy sztring és egy második sztring viszonyát jelzi a rendezési sorrendben.

  • CompareOrdinal egy egész számot ad vissza, amely egy sztring és egy második sztring kapcsolatát jelzi a kódpontok összehasonlítása alapján.

  • CompareTo Egy egész számot ad vissza, ami az aktuális sztring és a rendezési sorrend egy második sztringjének kapcsolatát jelzi. A CompareTo(String) metódus biztosítja az IComparable osztályhoz tartozó IComparable<T> implementációkat és String megvalósításokat.

Sztringek egyenlőségének tesztelése

A Equals metódus meghívásával megállapíthatja, hogy két karakterlánc egyenlő-e. A példány Equals(String, String, StringComparison) és a statikus Equals(String, StringComparison) túlterhelések segítségével meghatározhatja, hogy az összehasonlítás kulturális szempontból érzékeny-e vagy sem, és hogy az esetet figyelembe veszik-e vagy figyelmen kívül hagyják-e. A legtöbb egyenlőségi teszt sorszámmal rendelkezik, és a rendszererőforráshoz (például fájlrendszerobjektumhoz) való hozzáférést meghatározó egyenlőség összehasonlításának mindig sorszámmal kell rendelkeznie.

Karakterek keresése sztringben

Az String osztály kétféle keresési módszert tartalmaz:

  • Metódusok, amelyek visszatérnek egy Boolean értékkel annak jelzésére, hogy egy adott részkarakterlánc jelen van-e egy karakterlánc-példányban. Ezek közé tartoznak a Contains, EndsWithés StartsWith a metódusok.

  • Metódusok, amelyek egy karakterlánc példányban lévő részkarakterlánc kezdő pozícióját jelzik. Ezek közé tartoznak a IndexOf, IndexOfAny, LastIndexOfés LastIndexOfAny a metódusok.

Warning

Ha egy adott minta sztringben szeretne keresni egy adott részstring helyett, használjon reguláris kifejezéseket. További információ: .NET Regular Expressions.

Sztring módosítása

Az String osztály a következő metódusokat tartalmazza, amelyek úgy tűnik, hogy módosítják egy sztring értékét:

  • Insert karakterláncot szúr be az aktuális String példányba.

  • PadLeft Egy megadott karakter egy vagy több előfordulását beszúrja egy karakterlánc elejére.

  • PadRight Egy adott karakter egy vagy több előfordulását szúrja be egy sztring végére.

  • Remove az aktuális String példányból töröl egy részsztringet.

  • Replace Egy alsztringet egy másik alsztringre cserél az aktuális String példányban.

  • ToLower és ToLowerInvariant a karakterlánc összes karakterét kisbetűssé alakítja.

  • ToUpper és ToUpperInvariant konvertálják a karakterláncban lévő összes karaktert nagybetűvé.

  • Trim Eltávolítja egy karakter összes előfordulását egy karakterlánc elejétől és végétől.

  • TrimEnd Eltávolítja egy karakter összes előfordulását egy karakterlánc végéről.

  • TrimStart Eltávolítja egy karakter összes előfordulását egy sztring elejéről.

Important

Minden sztringmódosítási módszer új String objektumot ad vissza. Nem módosítják az aktuális példány értékét.

Részsztringek kinyerése sztringből

A String.Split metódus egyetlen sztringet több sztringre választ el. A metódus túlterhelései lehetővé teszik több elválasztó karakter megadását, a metódus által kinyert részsztringek számának korlátozását, a térközök alsztringekből való levágását, valamint annak megadását, hogy az üres sztringek (amelyek határolójelek szomszédosak) szerepeljenek-e a visszaadott sztringek között.

Sztringek egyesítése

A sztringösszefűzéshez a következő String módszerek használhatók:

  • Concat egy vagy több részsztringet egyesít egyetlen sztringben.
  • Join összefűz egy vagy több részsztringet egyetlen elembe, és elválasztójelet ad az egyes részsztringek közé.

Értékek formázása

A String.Format metódus az összetett formázási funkcióval egy sztring egy vagy több helyőrzőjét lecseréli egy objektum vagy érték sztringképére. A Format módszert gyakran használják a következők végrehajtására:

  • Numerikus érték sztringképének beágyazása egy sztringbe.
  • Dátum- és időérték szöveges formájának beágyazása szövegbe.
  • Az enumerálási érték sztringképének beágyazása egy sztringbe.
  • Egy olyan objektum sztringképének beágyazásához, amely támogatja a IFormattable felületet egy sztringben.
  • Egy nagyobb karakterláncon belüli mezőt jobbra vagy balra igazíthat.

A formázási műveletekről és példákról részletes információt a túlterhelés összegzésében Format talál.

Karakterlánc másolása

A sztring másolatának készítéséhez a következő String metódusokat hívhatja meg:

  • Clone egy meglévő String objektumra mutató hivatkozást ad vissza.
  • CopyTo a sztringből egy részt egy karaktertömbbe másol.

Sztring normalizálása

Unicode-ban egyetlen karakter több kódponttal is rendelkezhet. A normalizálás ezeket az egyenértékű karaktereket ugyanazzal a bináris ábrázolással alakítja át. A String.Normalize metódus végrehajtja a normalizálást, és a String.IsNormalized metódus meghatározza, hogy egy sztring normalizálva van-e.

További információt és egy példát a cikk korábbi, Normalizálás szakaszában talál.

Konstruktorok

Name Description
String(Char, Int32)

Inicializálja az String osztály új példányát egy megadott Unicode-karakter által jelzett értékre, amely többször ismétlődik.

String(Char[], Int32, Int32)

Inicializálja az String osztály új példányát a Unicode-karakterek tömbje által jelzett értékre, a tömbön belüli kezdő karakterpozícióra és a hosszra.

String(Char[])

Inicializálja az String osztály új példányát a megadott karaktertömbben megjelölt Unicode-karakterekre.

String(Char*, Int32, Int32)

Inicializálja az String osztály új példányát egy megadott Unicode-karakterekből álló tömbre mutató által jelzett értékre, a tömbön belüli kezdő karakterpozícióra és a hosszra.

String(Char*)

Inicializálja az String osztály új példányát a megadott mutató által jelzett értékre Unicode-karakterek tömbje felé.

String(ReadOnlySpan<Char>)

Inicializálja az String osztály új példányát a megadott írásvédett időtartamban megadott Unicode-karakterekre.

String(SByte*, Int32, Int32, Encoding)

Inicializálja az String osztály új példányát a megadott mutató által jelzett értékre egy 8 bites aláírt egész számokat tartalmazó tömbre, a tömbön belüli kezdőpozícióra, egy hosszra és egy objektumra Encoding .

String(SByte*, Int32, Int32)

Inicializálja az String osztály új példányát a megadott mutató által jelzett értékre egy 8 bites aláírt egész számokat tartalmazó tömbre, a tömbön belüli kezdőpozícióra és egy hosszra.

String(SByte*)

Inicializálja az String osztály új példányát a 8 bites aláírt egész számok tömbjének mutatója által jelzett értékre.

Mezők

Name Description
Empty

Az üres sztringet jelöli. Ez a mező csak olvasható.

Tulajdonságok

Name Description
Chars[Int32]

Lekéri az Char objektumot az aktuális String objektum megadott helyére.

Length

Lekéri az aktuális String objektumban lévő karakterek számát.

Metódusok

Name Description
Clone()

A ezen példányára Stringmutató hivatkozást ad vissza.

Compare(String, Int32, String, Int32, Int32, Boolean, CultureInfo)

Két megadott String objektum részsztringjeinek összehasonlítása, figyelmen kívül hagyva vagy tiszteletben tartva az esetüket, valamint kultúraspecifikus információk használata az összehasonlítás befolyásolására, és egy egész számot ad vissza, amely a rendezési sorrendben lévő relatív pozíciójukat jelzi.

Compare(String, Int32, String, Int32, Int32, Boolean)

Két megadott String objektum részszűrését hasonlítja össze, figyelmen kívül hagyva vagy tiszteletben tartva az esetüket, és egy egész számot ad vissza, amely a rendezési sorrendben lévő relatív pozíciójukat jelzi.

Compare(String, Int32, String, Int32, Int32, CultureInfo, CompareOptions)

Két megadott String objektum részszűrését hasonlítja össze a megadott összehasonlítási lehetőségek és kultúraspecifikus információk használatával az összehasonlítás befolyásolása érdekében, és egy egész számot ad vissza, amely a rendezési sorrendben jelzi a két alsztring egymáshoz való viszonyát.

Compare(String, Int32, String, Int32, Int32, StringComparison)

Két megadott String objektum részszűrését hasonlítja össze a megadott szabályok használatával, és egy egész számot ad vissza, amely a rendezési sorrendben lévő relatív pozíciójukat jelzi.

Compare(String, Int32, String, Int32, Int32)

Két megadott String objektum részszűrését hasonlítja össze, és egy egész számot ad vissza, amely a rendezési sorrendben lévő relatív pozíciójukat jelzi.

Compare(String, String, Boolean, CultureInfo)

Összehasonlít két megadott String objektumot, figyelmen kívül hagyva vagy tiszteletben tartva az esetüket, és kultúraspecifikus információkat használ az összehasonlítás befolyásolására, és egy egész számot ad vissza, amely a rendezési sorrendben elfoglalt relatív pozíciójukat jelzi.

Compare(String, String, Boolean)

Összehasonlít két megadott String objektumot, figyelmen kívül hagyva vagy tiszteletben tartva az esetüket, és egy egész számot ad vissza, amely a rendezési sorrendben lévő relatív pozíciójukat jelzi.

Compare(String, String, CultureInfo, CompareOptions)

Összehasonlít két megadott String objektumot a megadott összehasonlítási lehetőségek és kultúraspecifikus információk használatával az összehasonlítás befolyásolásához, és egy egész számot ad vissza, amely a rendezési sorrendben jelzi a két sztring egymáshoz való viszonyát.

Compare(String, String, StringComparison)

Két megadott String objektumot hasonlít össze a megadott szabályokkal, és egy egész számot ad vissza, amely a rendezési sorrendben lévő relatív pozíciójukat jelzi.

Compare(String, String)

Összehasonlít két megadott String objektumot, és egy egész számot ad vissza, amely a rendezési sorrendben lévő relatív pozíciójukat jelzi.

CompareOrdinal(String, Int32, String, Int32, Int32)

Két megadott String objektum részszűrését hasonlítja össze az egyes részszűrések megfelelő Char objektumainak numerikus értékeinek kiértékelésével.

CompareOrdinal(String, String)

Két megadott String objektumot hasonlít össze az egyes sztringek megfelelő Char objektumainak numerikus értékeinek kiértékelésével.

CompareTo(Object)

Összehasonlítja ezt a példányt egy megadott Object példánnyal, és jelzi, hogy ez a példány megelőzi, követi vagy ugyanabban a sorrendben jelenik meg, mint a megadott Object.

CompareTo(String)

Összehasonlítja ezt a példányt egy megadott String objektummal, és jelzi, hogy ez a példány megelőzi, követi vagy ugyanabban a sorrendben jelenik meg, mint a megadott sztring.

Concat(IEnumerable<String>)

Összefűzi egy összeállított IEnumerable<T> gyűjtemény Stringtagjait.

Concat(Object, Object, Object, Object)

Összefűzi négy megadott objektum és egy választható változóhossz-paraméterlistában megadott objektumok sztring-ábrázolását.

Concat(Object, Object, Object)

Összefűzi három megadott objektum sztringreprezentációit.

Concat(Object, Object)

Összefűzi két megadott objektum sztringreprezentációit.

Concat(Object)

Egy megadott objektum sztring-ábrázolását hozza létre.

Concat(Object[])

Összefűzi egy adott Object tömb elemeinek sztringreprezentációit.

Concat(ReadOnlySpan<Char>, ReadOnlySpan<Char>, ReadOnlySpan<Char>, ReadOnlySpan<Char>)

Összefűzi négy megadott írásvédett karaktersorozat sztring-ábrázolását.

Concat(ReadOnlySpan<Char>, ReadOnlySpan<Char>, ReadOnlySpan<Char>)

Összefűzi három megadott írásvédett karaktersorozat sztring-ábrázolását.

Concat(ReadOnlySpan<Char>, ReadOnlySpan<Char>)

Összefűzi két megadott írásvédett karakter sztring-ábrázolását.

Concat(ReadOnlySpan<Object>)

Összefűzi az elemek sztringreprezentációit egy adott objektumtartományban.

Concat(ReadOnlySpan<String>)

Összefűzi a megadott időtartam elemeit String.

Concat(String, String, String, String)

Összefűzi a négy megadott példányát String.

Concat(String, String, String)

A három megadott példányát fűzi Stringössze.

Concat(String, String)

Összefűzi a két megadott példányt.String

Concat(String[])

Összefűzi egy adott String tömb elemeit.

Concat<T>(IEnumerable<T>)

Összefűzi a megvalósítás tagjait IEnumerable<T> .

Contains(Char, StringComparison)

Egy értéket ad vissza, amely jelzi, hogy egy adott karakter szerepel-e ebben a sztringben a megadott összehasonlító szabályok használatával.

Contains(Char)

Egy értéket ad vissza, amely jelzi, hogy egy adott karakter szerepel-e ebben a sztringben.

Contains(Rune, StringComparison)

A szöveget UTF-16 kódegységek sorozataként jelöli.

Contains(Rune)

A szöveget UTF-16 kódegységek sorozataként jelöli.

Contains(String, StringComparison)

Egy értéket ad vissza, amely azt jelzi, hogy egy megadott sztring szerepel-e ebben a sztringben a megadott összehasonlító szabályok használatával.

Contains(String)

Egy értéket ad vissza, amely azt jelzi, hogy egy adott részsztring jelenik-e meg ebben a sztringben.

Copy(String)
Elavult.

Létrehoz egy új példányt String , amelynek értéke megegyezik a megadott Stringértékkel.

CopyTo(Int32, Char[], Int32, Int32)

Egy megadott számú karaktert másol a példány egy megadott pozíciójából egy Unicode-karakterből álló tömbbe.

CopyTo(Span<Char>)

Másolja a sztring tartalmát a céltartományba.

Create(IFormatProvider, DefaultInterpolatedStringHandler)

Új sztringet hoz létre a megadott szolgáltatóval a megadott interpolált sztring formázásának szabályozásához.

Create(IFormatProvider, Span<Char>, DefaultInterpolatedStringHandler)

Új sztringet hoz létre a megadott szolgáltatóval a megadott interpolált sztring formázásának szabályozásához.

Create<TState>(Int32, TState, SpanAction<Char,TState>)

Létrehoz egy adott hosszúságú új sztringet, és inicializálja azt a létrehozás után a megadott visszahívás használatával.

EndsWith(Char, StringComparison)

A szöveget UTF-16 kódegységek sorozataként jelöli.

EndsWith(Char)

Meghatározza, hogy a sztringpéldány vége megegyezik-e a megadott karakterrel.

EndsWith(Rune, StringComparison)

A szöveget UTF-16 kódegységek sorozataként jelöli.

EndsWith(Rune)

A szöveget UTF-16 kódegységek sorozataként jelöli.

EndsWith(String, Boolean, CultureInfo)

Meghatározza, hogy a sztringpéldány vége megegyezik-e a megadott sztringgel a megadott kultúrával való összehasonlításkor.

EndsWith(String, StringComparison)

Meghatározza, hogy a sztringpéldány vége megegyezik-e a megadott sztringgel a megadott összehasonlítási beállítással való összehasonlításkor.

EndsWith(String)

Meghatározza, hogy a sztringpéldány vége megegyezik-e a megadott sztringgel.

EnumerateRunes()

A sztring enumerálását Rune adja vissza.

Equals(Object)

Meghatározza, hogy ennek a példánynak és egy megadott objektumnak, amelynek szintén objektumnak kell lennie String , ugyanazzal az értékkel rendelkezik-e.

Equals(String, String, StringComparison)

Meghatározza, hogy két megadott String objektum azonos értékkel rendelkezik-e. A paraméter az összehasonlításban használt kulturális, eseti és rendezési szabályokat határozza meg.

Equals(String, String)

Meghatározza, hogy két megadott String objektum azonos értékkel rendelkezik-e.

Equals(String, StringComparison)

Meghatározza, hogy ez a sztring és egy adott String objektum azonos értékkel rendelkezik-e. A paraméter az összehasonlításban használt kulturális, eseti és rendezési szabályokat határozza meg.

Equals(String)

Meghatározza, hogy ennek a példánynak és egy másik megadott String objektumnak ugyanaz az értéke-e.

Format(IFormatProvider, CompositeFormat, Object[])

A formázási elemet vagy elemeket CompositeFormat lecseréli a megadott formátumban lévő megfelelő objektumok sztringre történő megjelenítésére.

Format(IFormatProvider, CompositeFormat, ReadOnlySpan<Object>)

A formázási elemet vagy elemeket CompositeFormat lecseréli a megadott formátumban lévő megfelelő objektumok sztringre történő megjelenítésére.

Format(IFormatProvider, String, Object, Object, Object)

A sztringben lévő formázási elemeket három megadott objektum sztringképére cseréli. Egy paraméter kultúrára vonatkozó formázási információkat tartalmaz.

Format(IFormatProvider, String, Object, Object)

A sztringben lévő formázási elemeket két megadott objektum sztringképére cseréli. Egy paraméter kultúrára vonatkozó formázási információkat tartalmaz.

Format(IFormatProvider, String, Object)

A megadott sztringben lévő formázási elemet vagy elemeket a megfelelő objektum sztringképére cseréli. Egy paraméter kultúrára vonatkozó formázási információkat tartalmaz.

Format(IFormatProvider, String, Object[])

A sztringben lévő formázási elemeket lecseréli egy adott tömb megfelelő objektumainak sztring-ábrázolásaira. Egy paraméter kultúrára vonatkozó formázási információkat tartalmaz.

Format(IFormatProvider, String, ReadOnlySpan<Object>)

A sztringben lévő formázási elemeket lecseréli a megadott időtartamban lévő megfelelő objektumok sztring-ábrázolásaira. Egy paraméter kultúrára vonatkozó formázási információkat tartalmaz.

Format(String, Object, Object, Object)

A sztringben lévő formázási elemeket három megadott objektum sztringképére cseréli.

Format(String, Object, Object)

A sztringben lévő formázási elemeket két megadott objektum sztringképére cseréli.

Format(String, Object)

Egy sztring egy vagy több formázási elemét lecseréli egy adott objektum sztringképére.

Format(String, Object[])

A megadott sztring formázási elemét lecseréli egy adott tömb megfelelő objektumának sztringre való megjelenítésére.

Format(String, ReadOnlySpan<Object>)

A megadott sztring formázási elemét lecseréli egy adott sztringben lévő megfelelő objektum sztringre való megjelenítésére.

Format<TArg0,TArg1,TArg2>(IFormatProvider, CompositeFormat, TArg0, TArg1, TArg2)

A formázási elemet vagy elemeket CompositeFormat lecseréli a megadott formátumban lévő megfelelő objektumok sztringre történő megjelenítésére.

Format<TArg0,TArg1>(IFormatProvider, CompositeFormat, TArg0, TArg1)

A formázási elemet vagy elemeket CompositeFormat lecseréli a megadott formátumban lévő megfelelő objektumok sztringre történő megjelenítésére.

Format<TArg0>(IFormatProvider, CompositeFormat, TArg0)

A formázási elemet vagy elemeket CompositeFormat lecseréli a megadott formátumban lévő megfelelő objektumok sztringre történő megjelenítésére.

GetEnumerator()

Beolvas egy objektumot, amely a sztringben szereplő egyes karaktereket át tudja iterálni.

GetHashCode()

A sztring kivonatkódját adja vissza.

GetHashCode(ReadOnlySpan<Char>, StringComparison)

A megadott írásvédett karaktertartomány kivonatkódját adja vissza a megadott szabályok használatával.

GetHashCode(ReadOnlySpan<Char>)

A megadott írásvédett karaktertartomány kivonatkódját adja vissza.

GetHashCode(StringComparison)

A megadott szabályokkal adja vissza a sztring kivonatkódját.

GetPinnableReference()

A sztring elemére mutató hivatkozást ad vissza a nulla indexnél.

Ez a módszer .NET fordítók támogatására szolgál, és nem felhasználói kóddal hívható meg.

GetType()

Lekéri az Type aktuális példányt.

(Öröklődés forrása Object)
GetTypeCode()

TypeCode Az osztály értékét String adja vissza.

IndexOf(Char, Int32, Int32, StringComparison)

A szöveget UTF-16 kódegységek sorozataként jelöli.

IndexOf(Char, Int32, Int32)

A megadott karakter első előfordulásának nullaalapú indexét jelenti ebben a példányban. A keresés egy megadott karakterhelyzetben kezdődik, és meghatározott számú karakterpozíciót vizsgál meg.

IndexOf(Char, Int32, StringComparison)

A szöveget UTF-16 kódegységek sorozataként jelöli.

IndexOf(Char, Int32)

A megadott Unicode-karakter első előfordulásának nullaalapú indexét jelenti ebben a sztringben. A keresés egy megadott karakterhelyzetben kezdődik.

IndexOf(Char, StringComparison)

A megadott Unicode-karakter első előfordulásának nullaalapú indexét jelenti ebben a sztringben. A paraméter megadja a megadott karakterhez használni kívánt keresés típusát.

IndexOf(Char)

A megadott Unicode-karakter első előfordulásának nullaalapú indexét jelenti ebben a sztringben.

IndexOf(Rune, Int32, Int32, StringComparison)

A szöveget UTF-16 kódegységek sorozataként jelöli.

IndexOf(Rune, Int32, Int32)

A szöveget UTF-16 kódegységek sorozataként jelöli.

IndexOf(Rune, Int32, StringComparison)

A szöveget UTF-16 kódegységek sorozataként jelöli.

IndexOf(Rune, Int32)

A szöveget UTF-16 kódegységek sorozataként jelöli.

IndexOf(Rune, StringComparison)

A szöveget UTF-16 kódegységek sorozataként jelöli.

IndexOf(Rune)

A szöveget UTF-16 kódegységek sorozataként jelöli.

IndexOf(String, Int32, Int32, StringComparison)

A megadott sztring első előfordulásának nulla alapú indexét jelenti az aktuális String objektumban. A paraméterek megadják az aktuális sztring kezdő keresési helyét, az aktuális sztringben keresendő karakterek számát, valamint a megadott sztringhez használni kívánt keresés típusát.

IndexOf(String, Int32, Int32)

A megadott sztring első előfordulásának nullaalapú indexét jelenti ebben a példányban. A keresés egy megadott karakterhelyzetben kezdődik, és meghatározott számú karakterpozíciót vizsgál meg.

IndexOf(String, Int32, StringComparison)

A megadott sztring első előfordulásának nulla alapú indexét jelenti az aktuális String objektumban. A paraméterek megadják az aktuális sztring kezdő keresési helyét és a megadott sztringhez használni kívánt keresési típust.

IndexOf(String, Int32)

A megadott sztring első előfordulásának nullaalapú indexét jelenti ebben a példányban. A keresés egy megadott karakterhelyzetben kezdődik.

IndexOf(String, StringComparison)

A megadott sztring első előfordulásának nulla alapú indexét jelenti az aktuális String objektumban. A paraméter megadja a megadott sztringhez használandó keresés típusát.

IndexOf(String)

A megadott sztring első előfordulásának nullaalapú indexét jelenti ebben a példányban.

IndexOfAny(Char[], Int32, Int32)

A Unicode-karakterek megadott tömbjében lévő karakterek első előfordulásának nulla alapú indexét jelenti ebben a példányban. A keresés egy megadott karakterhelyzetben kezdődik, és meghatározott számú karakterpozíciót vizsgál meg.

IndexOfAny(Char[], Int32)

A Unicode-karakterek megadott tömbjében lévő karakterek első előfordulásának nulla alapú indexét jelenti ebben a példányban. A keresés egy megadott karakterhelyzetben kezdődik.

IndexOfAny(Char[])

A Unicode-karakterek megadott tömbjében lévő karakterek első előfordulásának nulla alapú indexét jelenti ebben a példányban.

Insert(Int32, String)

Egy új sztringet ad vissza, amelyben egy adott sztring van beszúrva egy adott indexpozícióba ebben a példányban.

Intern(String)

Lekéri a rendszer hivatkozását a megadottra String.

IsInterned(String)

Egy megadottra Stringmutató hivatkozást kér le.

IsNormalized()

Azt jelzi, hogy ez a sztring a Unicode C normalizálási formájában van-e.

IsNormalized(NormalizationForm)

Azt jelzi, hogy ez a sztring a megadott Unicode normalizálási formában van-e.

IsNullOrEmpty(String)

Azt jelzi, hogy a megadott sztring null vagy üres sztring ("").

IsNullOrWhiteSpace(String)

Azt jelzi, hogy egy megadott sztring nullüres-e, vagy csak szóköz karakterekből áll.

Join(Char, Object[])

Összefűzi egy objektumtömb sztringreprezentációit a megadott elválasztójellel az egyes tagok között.

Join(Char, ReadOnlySpan<Object>)

Összefűzi az objektumok egy-egy halmazának sztring-ábrázolását az egyes tagok között megadott elválasztójellel.

Join(Char, ReadOnlySpan<String>)

Sztringek egy részét összefűzi az egyes tagok között megadott elválasztójellel.

Join(Char, String[], Int32, Int32)

Összefűz egy sztringtömböt a megadott elválasztójellel az egyes tagok között, kezdve a pozícióban lévő valuestartIndex elemmel, és összefűzi az count elemeket.

Join(Char, String[])

Sztringek tömbjének összefűzése az egyes tagok között megadott elválasztójellel.

Join(String, IEnumerable<String>)

Összefűzi egy létrehozott IEnumerable<T> típusú Stringgyűjtemény tagjait az egyes tagok között megadott elválasztójellel.

Join(String, Object[])

Összefűzi egy objektumtömb elemeit a megadott elválasztójellel az egyes elemek között.

Join(String, ReadOnlySpan<Object>)

Összefűzi az objektumok egy-egy halmazának sztring-ábrázolását az egyes tagok között megadott elválasztójellel.

Join(String, ReadOnlySpan<String>)

Sztringek egy részét összefűzi az egyes tagok között megadott elválasztójellel.

Join(String, String[], Int32, Int32)

Összefűzi egy sztringtömb megadott elemeit a megadott elválasztójellel az egyes elemek között.

Join(String, String[])

Összefűzi egy sztringtömb összes elemét az egyes elemek között megadott elválasztójellel.

Join<T>(Char, IEnumerable<T>)

Összefűzi a gyűjtemény tagjait a megadott elválasztójellel az egyes tagok között.

Join<T>(String, IEnumerable<T>)

Összefűzi a gyűjtemény tagjait a megadott elválasztójellel az egyes tagok között.

LastIndexOf(Char, Int32, Int32, StringComparison)

A szöveget UTF-16 kódegységek sorozataként jelöli.

LastIndexOf(Char, Int32, Int32)

A megadott Unicode-karakter utolsó előfordulásának nullaalapú indexpozícióját jelenti a példányon belüli alsztringben. A keresés egy megadott karakterhelyzetben kezdődik, és a sztring elején halad előre meghatározott számú karakterpozíció esetén.

LastIndexOf(Char, Int32, StringComparison)

A szöveget UTF-16 kódegységek sorozataként jelöli.

LastIndexOf(Char, Int32)

Egy megadott Unicode-karakter utolsó előfordulásának nullaalapú indexpozícióját jelenti ebben a példányban. A keresés egy megadott karakterhelyzetben kezdődik, és a sztring elejéhez visszafelé halad.

LastIndexOf(Char, StringComparison)

A szöveget UTF-16 kódegységek sorozataként jelöli.

LastIndexOf(Char)

Egy megadott Unicode-karakter utolsó előfordulásának nullaalapú indexpozícióját jelenti ebben a példányban.

LastIndexOf(Rune, Int32, Int32, StringComparison)

A szöveget UTF-16 kódegységek sorozataként jelöli.

LastIndexOf(Rune, Int32, Int32)

A szöveget UTF-16 kódegységek sorozataként jelöli.

LastIndexOf(Rune, Int32, StringComparison)

A szöveget UTF-16 kódegységek sorozataként jelöli.

LastIndexOf(Rune, Int32)

A szöveget UTF-16 kódegységek sorozataként jelöli.

LastIndexOf(Rune, StringComparison)

A szöveget UTF-16 kódegységek sorozataként jelöli.

LastIndexOf(Rune)

A szöveget UTF-16 kódegységek sorozataként jelöli.

LastIndexOf(String, Int32, Int32, StringComparison)

Egy adott sztring utolsó előfordulásának nullaalapú indexpozícióját jelenti ebben a példányban. A keresés egy megadott karakterhelyzetben kezdődik, és a sztring elejére halad a megadott számú karakterpozíció esetében. A paraméter megadja a megadott sztring keresésekor végrehajtandó összehasonlítás típusát.

LastIndexOf(String, Int32, Int32)

Egy adott sztring utolsó előfordulásának nullaalapú indexpozícióját jelenti ebben a példányban. A keresés egy megadott karakterhelyzetben kezdődik, és a sztring elején halad előre meghatározott számú karakterpozíció esetén.

LastIndexOf(String, Int32, StringComparison)

Egy adott sztring utolsó előfordulásának nulla alapú indexét jelenti az aktuális String objektumon belül. A keresés egy megadott karakterhelyzetben kezdődik, és a sztring elejéhez visszafelé halad. A paraméter megadja a megadott sztring keresésekor végrehajtandó összehasonlítás típusát.

LastIndexOf(String, Int32)

Egy adott sztring utolsó előfordulásának nullaalapú indexpozícióját jelenti ebben a példányban. A keresés egy megadott karakterhelyzetben kezdődik, és a sztring elejéhez visszafelé halad.

LastIndexOf(String, StringComparison)

Egy adott sztring utolsó előfordulásának nulla alapú indexét jelenti az aktuális String objektumon belül. A paraméter megadja a megadott sztringhez használandó keresés típusát.

LastIndexOf(String)

Egy adott sztring utolsó előfordulásának nullaalapú indexpozícióját jelenti ebben a példányban.

LastIndexOfAny(Char[], Int32, Int32)

A Unicode-tömbben megadott egy vagy több karakter utolsó előfordulásának nullaalapú indexpozícióját jelenti. A keresés egy megadott karakterhelyzetben kezdődik, és a sztring elején halad előre meghatározott számú karakterpozíció esetén.

LastIndexOfAny(Char[], Int32)

A Unicode-tömbben megadott egy vagy több karakter utolsó előfordulásának nullaalapú indexpozícióját jelenti. A keresés egy megadott karakterhelyzetben kezdődik, és a sztring elejéhez visszafelé halad.

LastIndexOfAny(Char[])

A Unicode-tömbben megadott egy vagy több karakter utolsó előfordulásának nullaalapú indexpozícióját jelenti.

MemberwiseClone()

Az aktuális Objectpéldány sekély másolatát hozza létre.

(Öröklődés forrása Object)
Normalize()

Egy új sztringet ad vissza, amelynek szöveges értéke megegyezik ezzel a sztringgel, de amelynek bináris ábrázolása Unicode normalizálási formában C.

Normalize(NormalizationForm)

Egy új sztringet ad vissza, amelynek szöveges értéke megegyezik ezzel a sztringgel, de amelynek bináris ábrázolása a megadott Unicode normalizálási formában van.

PadLeft(Int32, Char)

Egy új sztringet ad vissza, amely jobbra igazítja a jelen példányban lévő karaktereket úgy, hogy a bal oldalon egy megadott Unicode-karaktert használ egy megadott teljes hosszra.

PadLeft(Int32)

Egy új sztringet ad vissza, amely jobbra igazítja az ebben a példányban lévő karaktereket úgy, hogy a bal oldalon szóközökkel vannak elválasztva egy megadott teljes hosszra.

PadRight(Int32, Char)

Egy új sztringet ad vissza, amely balra igazítja a sztringben szereplő karaktereket úgy, hogy a jobb oldalon egy megadott Unicode-karaktert használ egy megadott teljes hosszra.

PadRight(Int32)

Egy új sztringet ad vissza, amely balról igazítja a sztringben lévő karaktereket úgy, hogy a jobb oldalon szóközökkel vannak elválasztva egy megadott teljes hosszra.

Remove(Int32, Int32)

Egy új sztringet ad vissza, amelyben a megadott pozíciótól kezdődően az aktuális példányban megadott számú karakter törölve lett.

Remove(Int32)

Egy új sztringet ad vissza, amelyben az aktuális példány összes karaktere egy adott pozíciótól kezdve az utolsó pozícióig törlődött.

Replace(Char, Char)

Egy új sztringet ad vissza, amelyben egy adott Unicode-karakter minden előfordulása lecserélődik egy másik megadott Unicode-karakterre.

Replace(Rune, Rune)

A szöveget UTF-16 kódegységek sorozataként jelöli.

Replace(String, String, Boolean, CultureInfo)

Egy új sztringet ad vissza, amelyben egy adott sztring összes előfordulása az aktuális példányban egy másik megadott sztringre cserélődik a megadott kultúra és kis- és nagybetűk érzékenységének használatával.

Replace(String, String, StringComparison)

Egy új sztringet ad vissza, amelyben egy adott sztring összes előfordulása az aktuális példányban egy másik megadott sztringre cserélődik a megadott összehasonlítási típus használatával.

Replace(String, String)

Egy új sztringet ad vissza, amelyben egy adott sztring összes előfordulása az aktuális példányban egy másik megadott sztringre cserélődik.

ReplaceLineEndings()

Az aktuális sztring összes új sorütemezését lecseréli a következőre NewLine: .

ReplaceLineEndings(String)

Az aktuális sztring összes új sorütemezését lecseréli a következőre replacementText: .

Split(Char, Int32, StringSplitOptions)

Egy sztringet a megadott karakterelválasztó alapján legfeljebb több részsztringre osztja fel, és opcionálisan kihagyja az eredményből az üres részszúrásokat.

Split(Char, StringSplitOptions)

Sztringeket oszt fel részsztringekre egy megadott elválasztó karakter és opcionálisan a beállítások alapján.

Split(Char[], Int32, StringSplitOptions)

A sztringeket a megadott elválasztó karakterek és választható beállítások alapján legfeljebb több részsztringre osztja fel.

Split(Char[], Int32)

A sztringeket a megadott elválasztó karakterek alapján legfeljebb több részsztringre osztja fel.

Split(Char[], StringSplitOptions)

Sztringeket oszt fel részsztringekre a megadott elválasztó karakterek és beállítások alapján.

Split(Char[])

Sztringeket oszt fel részsztringekre a megadott elválasztó karakterek alapján.

Split(ReadOnlySpan<Char>)

Sztringeket oszt fel részsztringekre a megadott elválasztó karakterek alapján.

Split(Rune, Int32, StringSplitOptions)

A szöveget UTF-16 kódegységek sorozataként jelöli.

Split(Rune, StringSplitOptions)

A szöveget UTF-16 kódegységek sorozataként jelöli.

Split(String, Int32, StringSplitOptions)

A sztringeket egy megadott elválasztó sztring és opcionálisan lehetőségek alapján legfeljebb több részsztringre osztja fel.

Split(String, StringSplitOptions)

A megadott sztringelválasztón alapuló sztringeket részszűrésekre osztja fel.

Split(String[], Int32, StringSplitOptions)

A sztringeket a megadott elválasztó sztringek és opcionálisan lehetőségek alapján legfeljebb több részsztringre osztja fel.

Split(String[], StringSplitOptions)

A sztringeket részsztringekre osztja egy megadott elválasztó sztring és opcionálisan a beállítások alapján.

StartsWith(Char, StringComparison)

A szöveget UTF-16 kódegységek sorozataként jelöli.

StartsWith(Char)

Meghatározza, hogy ez a sztringpéldány a megadott karakterrel kezdődik-e.

StartsWith(Rune, StringComparison)

A szöveget UTF-16 kódegységek sorozataként jelöli.

StartsWith(Rune)

A szöveget UTF-16 kódegységek sorozataként jelöli.

StartsWith(String, Boolean, CultureInfo)

Meghatározza, hogy a sztringpéldány eleje megegyezik-e a megadott sztringgel a megadott kultúrával való összehasonlításkor.

StartsWith(String, StringComparison)

Meghatározza, hogy a sztringpéldány kezdete megegyezik-e a megadott sztringgel a megadott összehasonlítási beállítás használatával.

StartsWith(String)

Meghatározza, hogy a sztringpéldány kezdete megegyezik-e a megadott sztringgel.

Substring(Int32, Int32)

Lekéri az alsztringet ebből a példányból. Az alsztring egy megadott karakterhelyzetben kezdődik, és meghatározott hosszúságú.

Substring(Int32)

Lekéri az alsztringet ebből a példányból. Az alsztring egy megadott karakterhelyzetben kezdődik, és a sztring végéig tart.

ToCharArray()

Az ebben a példányban lévő karaktereket Unicode-karaktertömbbe másolja.

ToCharArray(Int32, Int32)

Az ebben a példányban megadott alsztringben szereplő karaktereket Unicode-karaktertömbbe másolja.

ToLower()

A sztring kisbetűssé konvertált másolatát adja vissza.

ToLower(CultureInfo)

Visszaadja ennek a sztringnek a kisbetűssé konvertált másolatát a megadott kultúra casing szabályainak használatával.

ToLowerInvariant()

Visszaadja az String objektum kisbetűssé konvertált másolatát az invariáns kultúra casing szabályaival.

ToString()

A következő példányt Stringadja vissza: a tényleges átalakítás nem történik meg.

ToString(IFormatProvider)

A következő példányt Stringadja vissza: a tényleges átalakítás nem történik meg.

ToUpper()

Visszaadja ennek a sztringnek a másolatát nagybetűssé alakítva.

ToUpper(CultureInfo)

Ennek a sztringnek a másolatát adja vissza nagybetűssé a megadott kultúra casing szabályainak használatával.

ToUpperInvariant()

Ennek az objektumnak a String másolatát adja vissza nagybetűssé az invariáns kultúra casing szabályaival.

Trim()

Eltávolítja az összes kezdő és záró szóköz karaktert az aktuális sztringből.

Trim(Char)

Eltávolítja egy karakter összes kezdő és záró példányát az aktuális sztringből.

Trim(Char[])

Eltávolítja a tömbben megadott karakterek összes kezdő és záró előfordulását az aktuális sztringből.

Trim(Rune)

A szöveget UTF-16 kódegységek sorozataként jelöli.

TrimEnd()

Eltávolítja az összes záró szóköz karaktert az aktuális sztringből.

TrimEnd(Char)

Eltávolítja egy karakter összes záró előfordulását az aktuális sztringből.

TrimEnd(Char[])

Eltávolítja a tömbben megadott karakterkészlet összes záró előfordulását az aktuális sztringből.

TrimEnd(Rune)

A szöveget UTF-16 kódegységek sorozataként jelöli.

TrimStart()

Eltávolítja az összes kezdő szóköz karaktert az aktuális sztringből.

TrimStart(Char)

Eltávolítja egy adott karakter összes kezdő előfordulását az aktuális sztringből.

TrimStart(Char[])

Eltávolítja a tömbben megadott karakterek összes kezdő előfordulását az aktuális sztringből.

TrimStart(Rune)

A szöveget UTF-16 kódegységek sorozataként jelöli.

TryCopyTo(Span<Char>)

Másolja a sztring tartalmát a céltartományba.

Operátorok

Name Description
Equality(String, String)

Meghatározza, hogy két megadott sztring azonos értékkel rendelkezik-e.

Implicit(String to ReadOnlySpan<Char>)

Egy adott sztring implicit konvertálását definiálja írásvédett karaktersorozatra.

Inequality(String, String)

Meghatározza, hogy két megadott sztring különböző értékekkel rendelkezik-e.

Explicit interfész-implementációk

Name Description
IComparable.CompareTo(Object)

Összehasonlítja ezt a példányt egy megadott Object példánnyal, és jelzi, hogy ez a példány megelőzi, követi vagy ugyanabban a sorrendben jelenik meg, mint a megadott Object.

IConvertible.GetTypeCode()

TypeCode Az osztály értékét String adja vissza.

IConvertible.ToBoolean(IFormatProvider)

Ennek a tagnak a leírását lásd ToBoolean(IFormatProvider): .

IConvertible.ToByte(IFormatProvider)

Ennek a tagnak a leírását lásd ToByte(IFormatProvider): .

IConvertible.ToChar(IFormatProvider)

Ennek a tagnak a leírását lásd ToChar(IFormatProvider): .

IConvertible.ToDateTime(IFormatProvider)

Ennek a tagnak a leírását lásd ToDateTime(IFormatProvider): .

IConvertible.ToDecimal(IFormatProvider)

Ennek a tagnak a leírását lásd ToDecimal(IFormatProvider): .

IConvertible.ToDouble(IFormatProvider)

Ennek a tagnak a leírását lásd ToDouble(IFormatProvider): .

IConvertible.ToInt16(IFormatProvider)

Ennek a tagnak a leírását lásd ToInt16(IFormatProvider): .

IConvertible.ToInt32(IFormatProvider)

Ennek a tagnak a leírását lásd ToInt32(IFormatProvider): .

IConvertible.ToInt64(IFormatProvider)

Ennek a tagnak a leírását lásd ToInt64(IFormatProvider): .

IConvertible.ToSByte(IFormatProvider)

Ennek a tagnak a leírását lásd ToSByte(IFormatProvider): .

IConvertible.ToSingle(IFormatProvider)

Ennek a tagnak a leírását lásd ToSingle(IFormatProvider): .

IConvertible.ToString(IFormatProvider)

Ennek a tagnak a leírását lásd ToString(IFormatProvider): .

IConvertible.ToType(Type, IFormatProvider)

Ennek a tagnak a leírását lásd ToType(Type, IFormatProvider): .

IConvertible.ToUInt16(IFormatProvider)

Ennek a tagnak a leírását lásd ToUInt16(IFormatProvider): .

IConvertible.ToUInt32(IFormatProvider)

Ennek a tagnak a leírását lásd ToUInt32(IFormatProvider): .

IConvertible.ToUInt64(IFormatProvider)

Ennek a tagnak a leírását lásd ToUInt64(IFormatProvider): .

IEnumerable.GetEnumerator()

Egy enumerátort ad vissza, amely az aktuális String objektumon halad át.

IEnumerable<Char>.GetEnumerator()

Egy enumerátort ad vissza, amely az aktuális String objektumon halad át.

IParsable<String>.Parse(String, IFormatProvider)

Egy sztringet egy értékbe elemez.

IParsable<String>.TryParse(String, IFormatProvider, String)

A szöveget UTF-16 kódegységek sorozataként jelöli.

ISpanParsable<String>.Parse(ReadOnlySpan<Char>, IFormatProvider)

Több karakterből álló elemet elemez egy értékben.

ISpanParsable<String>.TryParse(ReadOnlySpan<Char>, IFormatProvider, String)

A szöveget UTF-16 kódegységek sorozataként jelöli.

Bővítő metódusok

Name Description
Aggregate<TSource,TAccumulate,TResult>(IEnumerable<TSource>, TAccumulate, Func<TAccumulate,TSource,TAccumulate>, Func<TAccumulate,TResult>)

Egy akkumulátorfüggvényt alkalmaz egy sorozatra. A rendszer a megadott magértéket használja a kezdeti gyűjtőértékként, a megadott függvény pedig az eredményérték kiválasztásához.

Aggregate<TSource,TAccumulate>(IEnumerable<TSource>, TAccumulate, Func<TAccumulate,TSource,TAccumulate>)

Egy akkumulátorfüggvényt alkalmaz egy sorozatra. A rendszer a megadott magértéket használja a kezdeti gyűjtőértékként.

Aggregate<TSource>(IEnumerable<TSource>, Func<TSource,TSource,TSource>)

Egy akkumulátorfüggvényt alkalmaz egy sorozatra.

AggregateBy<TSource,TKey,TAccumulate>(IEnumerable<TSource>, Func<TSource, TKey>, Func<TKey,TAccumulate>, Func<TAccumulate,TSource,TAccumulate>, IEqualityComparer<TKey>)

Egy akkumulátorfüggvényt alkalmaz egy sorozatra, és az eredményeket kulcs szerint csoportosítja.

AggregateBy<TSource,TKey,TAccumulate>(IEnumerable<TSource>, Func<TSource, TKey>, TAccumulate, Func<TAccumulate,TSource,TAccumulate>, IEqualityComparer<TKey>)

Egy akkumulátorfüggvényt alkalmaz egy sorozatra, és az eredményeket kulcs szerint csoportosítja.

All<TSource>(IEnumerable<TSource>, Func<TSource,Boolean>)

Meghatározza, hogy egy sorozat összes eleme megfelel-e egy feltételnek.

Ancestors<T>(IEnumerable<T>, XName)

Szűrt elemgyűjteményt ad vissza, amely a forrásgyűjtemény minden csomópontjának elődeit tartalmazza. A gyűjtemény csak az egyező XName elemeket tartalmazza.

Ancestors<T>(IEnumerable<T>)

Olyan elemek gyűjteményét adja vissza, amelyek a forrásgyűjtemény minden csomópontjának elődeit tartalmazzák.

Any<TSource>(IEnumerable<TSource>, Func<TSource,Boolean>)

Meghatározza, hogy a sorozat bármely eleme megfelel-e egy feltételnek.

Any<TSource>(IEnumerable<TSource>)

Meghatározza, hogy a sorozat tartalmaz-e elemeket.

Append<TSource>(IEnumerable<TSource>, TSource)

Hozzáfűz egy értéket a sorozat végéhez.

AsEnumerable<TSource>(IEnumerable<TSource>)

A beírt értéket adja eredményül IEnumerable<T>.

AsMemory(String, Index)

Létrehoz egy újat ReadOnlyMemory<Char> a célsztring egy adott indextől kezdődő részén.

AsMemory(String, Int32, Int32)

Létrehoz egy újat ReadOnlyMemory<Char> a célsztring egy része felett, amely egy megadott pozícióban kezdődik egy hosszsal.

AsMemory(String, Int32)

Újat ReadOnlyMemory<Char> hoz létre a célsztring egy adott karakterpozíciótól kezdve.

AsMemory(String, Range)

Létrehoz egy újat ReadOnlyMemory<Char> a célsztring megadott tartományán keresztül.

AsMemory(String)

Újat ReadOnlyMemory<Char> hoz létre a célsztring része felett.

AsParallel(IEnumerable)

Lehetővé teszi a lekérdezés párhuzamosítását.

AsParallel<TSource>(IEnumerable<TSource>)

Lehetővé teszi a lekérdezés párhuzamosítását.

AsQueryable(IEnumerable)

Átalakítja az egyiket IEnumerableIQueryable.

AsQueryable<TElement>(IEnumerable<TElement>)

Általánossá alakít át egy általánost IEnumerable<T>IQueryable<T>.

AsSpan(String, Index)

Újat ReadOnlySpan<T> hoz létre a célsztring egy része felett egy megadott pozíciótól a sztring végéig.

AsSpan(String, Int32, Int32)

Egy új írásvédett tartományt hoz létre a célsztring egy adott pozícióból megadott számú karakterből.

AsSpan(String, Int32)

Új írásvédett hatókört hoz létre a célsztring egy részére egy megadott pozíciótól a sztring végéig.

AsSpan(String, Range)

Újat ReadOnlySpan<T> hoz létre egy célsztring egy részén a tartomány kezdő és záró indexeinek használatával.

AsSpan(String)

Új írásvédett karakterláncot hoz létre.

Average<TSource>(IEnumerable<TSource>, Func<TSource,Decimal>)

Kiszámítja az értékek sorozatának átlagát Decimal , amelyet egy átalakítási függvény meghívásával kapunk a bemeneti sorozat egyes elemeire.

Average<TSource>(IEnumerable<TSource>, Func<TSource,Double>)

Kiszámítja az értékek sorozatának átlagát Double , amelyet egy átalakítási függvény meghívásával kapunk a bemeneti sorozat egyes elemeire.

Average<TSource>(IEnumerable<TSource>, Func<TSource,Int32>)

Kiszámítja az értékek sorozatának átlagát Int32 , amelyet egy átalakítási függvény meghívásával kapunk a bemeneti sorozat egyes elemeire.

Average<TSource>(IEnumerable<TSource>, Func<TSource,Int64>)

Kiszámítja az értékek sorozatának átlagát Int64 , amelyet egy átalakítási függvény meghívásával kapunk a bemeneti sorozat egyes elemeire.

Average<TSource>(IEnumerable<TSource>, Func<TSource,Nullable<Decimal>>)

Kiszámítja a null értékű Decimal értékek sorozatának átlagát, amelyet egy transzformációs függvény meghívásával kapunk a bemeneti sorozat egyes elemeire.

Average<TSource>(IEnumerable<TSource>, Func<TSource,Nullable<Double>>)

Kiszámítja a null értékű Double értékek sorozatának átlagát, amelyet egy transzformációs függvény meghívásával kapunk a bemeneti sorozat egyes elemeire.

Average<TSource>(IEnumerable<TSource>, Func<TSource,Nullable<Int32>>)

Kiszámítja a null értékű Int32 értékek sorozatának átlagát, amelyet egy transzformációs függvény meghívásával kapunk a bemeneti sorozat egyes elemeire.

Average<TSource>(IEnumerable<TSource>, Func<TSource,Nullable<Int64>>)

Kiszámítja a null értékű Int64 értékek sorozatának átlagát, amelyet egy transzformációs függvény meghívásával kapunk a bemeneti sorozat egyes elemeire.

Average<TSource>(IEnumerable<TSource>, Func<TSource,Nullable<Single>>)

Kiszámítja a null értékű Single értékek sorozatának átlagát, amelyet egy transzformációs függvény meghívásával kapunk a bemeneti sorozat egyes elemeire.

Average<TSource>(IEnumerable<TSource>, Func<TSource,Single>)

Kiszámítja az értékek sorozatának átlagát Single , amelyet egy átalakítási függvény meghívásával kapunk a bemeneti sorozat egyes elemeire.

Cast<TResult>(IEnumerable)

Egy elem elemeit IEnumerable a megadott típusra veti.

Chunk<TSource>(IEnumerable<TSource>, Int32)

A sorozat elemeit legfeljebb sizemérettömbökre osztja.

Concat<TSource>(IEnumerable<TSource>, IEnumerable<TSource>)

Összefűz két sorozatot.

Contains<TSource>(IEnumerable<TSource>, TSource, IEqualityComparer<TSource>)

Meghatározza, hogy egy szekvencia egy megadott elemet tartalmaz-e egy megadott IEqualityComparer<T>elem használatával.

Contains<TSource>(IEnumerable<TSource>, TSource)

Meghatározza, hogy egy sorozat tartalmaz-e egy adott elemet az alapértelmezett egyenlőség-összehasonlító használatával.

CopyToDataTable<T>(IEnumerable<T>, DataTable, LoadOption, FillErrorEventHandler)

Objektumok másolása DataRow a megadott DataTableértékre egy olyan bemeneti IEnumerable<T> objektum alapján, amelyben az általános paraméter T szerepel DataRow.

CopyToDataTable<T>(IEnumerable<T>, DataTable, LoadOption)

Objektumok másolása DataRow a megadott DataTableértékre egy olyan bemeneti IEnumerable<T> objektum alapján, amelyben az általános paraméter T szerepel DataRow.

CopyToDataTable<T>(IEnumerable<T>)

Olyan értéket ad DataTable vissza, amely az DataRow objektumok másolatait tartalmazza, egy olyan bemeneti IEnumerable<T> objektumot ad vissza, amelyben az általános paraméter T szerepel DataRow.

Count<TSource>(IEnumerable<TSource>, Func<TSource,Boolean>)

Egy számot ad vissza, amely azt jelzi, hogy a megadott sorozat hány eleme felel meg egy feltételnek.

Count<TSource>(IEnumerable<TSource>)

A sorozat elemeinek számát adja vissza.

CountBy<TSource,TKey>(IEnumerable<TSource>, Func<TSource,TKey>, IEqualityComparer<TKey>)

A forrásütemezés elemeinek számát adja vissza kulcs szerint csoportosítva.

DefaultIfEmpty<TSource>(IEnumerable<TSource>, TSource)

A megadott sorozat elemeit vagy a megadott értéket adja vissza egy önálló gyűjteményben, ha a sorozat üres.

DefaultIfEmpty<TSource>(IEnumerable<TSource>)

A megadott sorozat elemeit vagy a típusparaméter alapértelmezett értékét adja vissza egy adott gyűjteményben, ha a sorozat üres.

DescendantNodes<T>(IEnumerable<T>)

A forrásgyűjtemény minden dokumentumának és elemének leszármazott csomópontjainak gyűjteményét adja vissza.

Descendants<T>(IEnumerable<T>, XName)

A forrásgyűjtemény minden elemének és dokumentumának leszármazott elemeit tartalmazó szűrt elemgyűjteményt ad vissza. A gyűjtemény csak az egyező XName elemeket tartalmazza.

Descendants<T>(IEnumerable<T>)

Olyan elemek gyűjteményét adja vissza, amelyek a forrásgyűjtemény minden elemének és dokumentumának leszármazott elemeit tartalmazzák.

Distinct<TSource>(IEnumerable<TSource>, IEqualityComparer<TSource>)

Különböző elemeket ad vissza egy sorozatból egy megadott IEqualityComparer<T> érték összehasonlítása gombra kattintva.

Distinct<TSource>(IEnumerable<TSource>)

Az értékek összehasonlításához az alapértelmezett egyenlőség-összehasonlítóval különböző elemeket ad vissza egy sorozatból.

DistinctBy<TSource,TKey>(IEnumerable<TSource>, Func<TSource,TKey>, IEqualityComparer<TKey>)

Különböző elemeket ad vissza egy sorozatból egy adott kulcsválasztó függvény szerint, és egy megadott összehasonlító használatával összehasonlítja a kulcsokat.

DistinctBy<TSource,TKey>(IEnumerable<TSource>, Func<TSource,TKey>)

Különböző elemeket ad vissza egy sorozatból egy adott kulcsválasztó függvény szerint.

ElementAt<TSource>(IEnumerable<TSource>, Index)

Egy adott index elemet ad vissza egy sorozatban.

ElementAt<TSource>(IEnumerable<TSource>, Int32)

Egy adott index elemet ad vissza egy sorozatban.

ElementAtOrDefault<TSource>(IEnumerable<TSource>, Index)

Egy adott index elemet ad vissza egy sorozatban, vagy egy alapértelmezett értéket, ha az index túllépi a tartományt.

ElementAtOrDefault<TSource>(IEnumerable<TSource>, Int32)

Egy adott index elemet ad vissza egy sorozatban, vagy egy alapértelmezett értéket, ha az index túllépi a tartományt.

Elements<T>(IEnumerable<T>, XName)

A forrásgyűjtemény minden elemének és dokumentumának gyermekelemeinek szűrt gyűjteményét adja vissza. A gyűjtemény csak az egyező XName elemeket tartalmazza.

Elements<T>(IEnumerable<T>)

A forrásgyűjteményben lévő összes elem és dokumentum gyermekelemeinek gyűjteményét adja vissza.

Except<TSource>(IEnumerable<TSource>, IEnumerable<TSource>, IEqualityComparer<TSource>)

Két sorozat halmazkülönbségét állítja elő a megadott IEqualityComparer<T> értékek összehasonlításához.

Except<TSource>(IEnumerable<TSource>, IEnumerable<TSource>)

Két sorozat halmazkülönbségét állítja elő az alapértelmezett egyenlőség-összehasonlítóval az értékek összehasonlításához.

ExceptBy<TSource,TKey>(IEnumerable<TSource>, IEnumerable<TKey>, Func<TSource,TKey>, IEqualityComparer<TKey>)

Két szekvencia halmazkülönbségét állítja elő egy megadott kulcsválasztó függvény szerint.

ExceptBy<TSource,TKey>(IEnumerable<TSource>, IEnumerable<TKey>, Func<TSource,TKey>)

Két szekvencia halmazkülönbségét állítja elő egy megadott kulcsválasztó függvény szerint.

First<TSource>(IEnumerable<TSource>, Func<TSource,Boolean>)

Egy adott feltételnek megfelelő sorozat első elemét adja vissza.

First<TSource>(IEnumerable<TSource>)

Egy sorozat első elemét adja vissza.

FirstOrDefault<TSource>(IEnumerable<TSource>, Func<TSource,Boolean>, TSource)

A sorrend első olyan elemét adja vissza, amely megfelel egy feltételnek, vagy egy megadott alapértelmezett értéket, ha nem található ilyen elem.

FirstOrDefault<TSource>(IEnumerable<TSource>, Func<TSource,Boolean>)

A sorozat első olyan elemét adja vissza, amely megfelel egy feltételnek vagy egy alapértelmezett értéknek, ha nem található ilyen elem.

FirstOrDefault<TSource>(IEnumerable<TSource>, TSource)

Egy sorozat első elemét adja vissza, vagy egy megadott alapértelmezett értéket, ha a sorozat nem tartalmaz elemeket.

FirstOrDefault<TSource>(IEnumerable<TSource>)

Egy sorozat első elemét adja vissza, vagy egy alapértelmezett értéket, ha a sorozat nem tartalmaz elemeket.

FullJoin<TOuter,TInner,TKey,TResult>(IEnumerable<TOuter>, IEnumerable<TInner>, Func<TOuter,TKey>, Func<TInner,TKey>, Func<TOuter,TInner,TResult>, IEqualityComparer<TKey>)

A szöveget UTF-16 kódegységek sorozataként jelöli.

FullJoin<TOuter,TInner,TKey>(IEnumerable<TOuter>, IEnumerable<TInner>, Func<TOuter,TKey>, Func<TInner,TKey>, IEqualityComparer<TKey>)

A szöveget UTF-16 kódegységek sorozataként jelöli.

GroupBy<TSource,TKey,TElement,TResult>(IEnumerable<TSource>, Func<TSource, TKey>, Func<TSource,TElement>, Func<TKey,IEnumerable<TElement>, TResult>, IEqualityComparer<TKey>)

Csoportosítja a szekvencia elemeit egy megadott kulcsválasztó függvény szerint, és létrehoz egy eredményértéket az egyes csoportokból és kulcsából. A fő értékeket egy megadott összehasonlító használatával hasonlítjuk össze, és az egyes csoportok elemeit egy megadott függvény használatával vetjük ki.

GroupBy<TSource,TKey,TElement,TResult>(IEnumerable<TSource>, Func<TSource,TKey>, Func<TSource,TElement>, Func<TKey,IEnumerable<TElement>,TResult>)

Csoportosítja a szekvencia elemeit egy megadott kulcsválasztó függvény szerint, és létrehoz egy eredményértéket az egyes csoportokból és kulcsából. Az egyes csoportok elemei egy adott függvény használatával lesznek kivetítve.

GroupBy<TSource,TKey,TElement>(IEnumerable<TSource>, Func<TSource,TKey>, Func<TSource,TElement>, IEqualityComparer<TKey>)

A szekvencia elemeit egy kulcsválasztó függvény szerint csoportosítja. A kulcsok összehasonlításához összehasonlítót kell használni, és az egyes csoportok elemeit egy megadott függvény használatával vetjük előre.

GroupBy<TSource,TKey,TElement>(IEnumerable<TSource>, Func<TSource,TKey>, Func<TSource,TElement>)

A szekvencia elemeit egy megadott kulcsválasztó függvény szerint csoportosítja, és az egyes csoportok elemeit egy megadott függvény használatával kivetíti.

GroupBy<TSource,TKey,TResult>(IEnumerable<TSource>, Func<TSource,TKey>, Func<TKey,IEnumerable<TSource>,TResult>, IEqualityComparer<TKey>)

Csoportosítja a szekvencia elemeit egy megadott kulcsválasztó függvény szerint, és létrehoz egy eredményértéket az egyes csoportokból és kulcsából. A kulcsok összehasonlítása egy megadott összehasonlító használatával történik.

GroupBy<TSource,TKey,TResult>(IEnumerable<TSource>, Func<TSource,TKey>, Func<TKey,IEnumerable<TSource>,TResult>)

Csoportosítja a szekvencia elemeit egy megadott kulcsválasztó függvény szerint, és létrehoz egy eredményértéket az egyes csoportokból és kulcsából.

GroupBy<TSource,TKey>(IEnumerable<TSource>, Func<TSource,TKey>, IEqualityComparer<TKey>)

Egy sorozat elemeit egy megadott kulcsválasztó függvény szerint csoportosítja, és egy megadott összehasonlító használatával összehasonlítja a kulcsokat.

GroupBy<TSource,TKey>(IEnumerable<TSource>, Func<TSource,TKey>)

A szekvencia elemeit egy megadott kulcsválasztó függvény szerint csoportosítja.

GroupJoin<TOuter,TInner,TKey,TResult>(IEnumerable<TOuter>, IEnumerable<TInner>, Func<TOuter,TKey>, Func<TInner,TKey>, Func<TOuter,IEnumerable<TInner>, TResult>, IEqualityComparer<TKey>)

Két sorozat elemeit korrelálja a kulcsegyenlőség alapján, és csoportosítja az eredményeket. A megadott IEqualityComparer<T> érték a kulcsok összehasonlítására szolgál.

GroupJoin<TOuter,TInner,TKey,TResult>(IEnumerable<TOuter>, IEnumerable<TInner>, Func<TOuter,TKey>, Func<TInner,TKey>, Func<TOuter,IEnumerable<TInner>, TResult>)

Két sorozat elemeit korrelálja a kulcsok egyenlősége alapján, és csoportosítja az eredményeket. Az alapértelmezett egyenlőség-összehasonlító a kulcsok összehasonlítására szolgál.

GroupJoin<TOuter,TInner,TKey>(IEnumerable<TOuter>, IEnumerable<TInner>, Func<TOuter,TKey>, Func<TInner,TKey>, IEqualityComparer<TKey>)

A szöveget UTF-16 kódegységek sorozataként jelöli.

Index<TSource>(IEnumerable<TSource>)

Egy számbavételt ad vissza, amely belefoglalja az elem indexét egy rekordba.

InDocumentOrder<T>(IEnumerable<T>)

Olyan csomópontgyűjteményt ad vissza, amely a forrásgyűjtemény összes csomópontját tartalmazza, dokumentum sorrendben rendezve.

Intersect<TSource>(IEnumerable<TSource>, IEnumerable<TSource>, IEqualityComparer<TSource>)

Két sorozat metszéspontját állítja elő a megadott IEqualityComparer<T> értékek összehasonlításához.

Intersect<TSource>(IEnumerable<TSource>, IEnumerable<TSource>)

Két sorozat metszéspontját állítja elő az alapértelmezett egyenlőség-összehasonlítóval az értékek összehasonlításához.

IntersectBy<TSource,TKey>(IEnumerable<TSource>, IEnumerable<TKey>, Func<TSource,TKey>, IEqualityComparer<TKey>)

Két sorozat metszéspontját állítja elő egy megadott kulcsválasztó függvény szerint.

IntersectBy<TSource,TKey>(IEnumerable<TSource>, IEnumerable<TKey>, Func<TSource,TKey>)

Két sorozat metszéspontját állítja elő egy megadott kulcsválasztó függvény szerint.

IsNormalized(String, NormalizationForm)

Azt jelzi, hogy egy sztring megadott Unicode-normalizálási formában van-e.

IsNormalized(String)

Azt jelzi, hogy a megadott sztring A Unicode normalizálási formában van-e.

Join<TOuter,TInner,TKey,TResult>(IEnumerable<TOuter>, IEnumerable<TInner>, Func<TOuter,TKey>, Func<TInner,TKey>, Func<TOuter,TInner,TResult>, IEqualityComparer<TKey>)

Két sorozat elemeit korrelálja egyező kulcsok alapján. A megadott IEqualityComparer<T> érték a kulcsok összehasonlítására szolgál.

Join<TOuter,TInner,TKey,TResult>(IEnumerable<TOuter>, IEnumerable<TInner>, Func<TOuter,TKey>, Func<TInner,TKey>, Func<TOuter,TInner,TResult>)

Két sorozat elemeit korrelálja egyező kulcsok alapján. Az alapértelmezett egyenlőség-összehasonlító a kulcsok összehasonlítására szolgál.

Join<TOuter,TInner,TKey>(IEnumerable<TOuter>, IEnumerable<TInner>, Func<TOuter,TKey>, Func<TInner,TKey>, IEqualityComparer<TKey>)

A szöveget UTF-16 kódegységek sorozataként jelöli.

Last<TSource>(IEnumerable<TSource>, Func<TSource,Boolean>)

Egy adott feltételnek megfelelő sorozat utolsó elemét adja vissza.

Last<TSource>(IEnumerable<TSource>)

Egy sorozat utolsó elemét adja vissza.

LastOrDefault<TSource>(IEnumerable<TSource>, Func<TSource,Boolean>, TSource)

Egy feltételnek megfelelő sorozat utolsó elemét adja vissza, vagy egy megadott alapértelmezett értéket, ha nem található ilyen elem.

LastOrDefault<TSource>(IEnumerable<TSource>, Func<TSource,Boolean>)

Egy olyan sorozat utolsó elemét adja vissza, amely megfelel egy feltételnek vagy egy alapértelmezett értéknek, ha nem található ilyen elem.

LastOrDefault<TSource>(IEnumerable<TSource>, TSource)

Egy sorozat utolsó elemét adja vissza, vagy egy megadott alapértelmezett értéket, ha a sorozat nem tartalmaz elemeket.

LastOrDefault<TSource>(IEnumerable<TSource>)

Egy sorozat utolsó elemét adja vissza, vagy egy alapértelmezett értéket, ha a sorozat nem tartalmaz elemeket.

LeftJoin<TOuter,TInner,TKey,TResult>(IEnumerable<TOuter>, IEnumerable<TInner>, Func<TOuter,TKey>, Func<TInner,TKey>, Func<TOuter,TInner,TResult>, IEqualityComparer<TKey>)

Két sorozat elemeit korrelálja egyező kulcsok alapján. A megadott IEqualityComparer<T> érték a kulcsok összehasonlítására szolgál.

LeftJoin<TOuter,TInner,TKey,TResult>(IEnumerable<TOuter>, IEnumerable<TInner>, Func<TOuter,TKey>, Func<TInner,TKey>, Func<TOuter,TInner,TResult>)

Két sorozat elemeit korrelálja egyező kulcsok alapján. Az alapértelmezett egyenlőség-összehasonlító a kulcsok összehasonlítására szolgál.

LeftJoin<TOuter,TInner,TKey>(IEnumerable<TOuter>, IEnumerable<TInner>, Func<TOuter,TKey>, Func<TInner,TKey>, IEqualityComparer<TKey>)

A szöveget UTF-16 kódegységek sorozataként jelöli.

LongCount<TSource>(IEnumerable<TSource>, Func<TSource,Boolean>)

Olyan értéket Int64 ad vissza, amely azt jelzi, hogy egy sorozat hány eleme felel meg egy feltételnek.

LongCount<TSource>(IEnumerable<TSource>)

Olyan értéket Int64 ad vissza, amely egy sorozat elemeinek teljes számát jelöli.

Max<TSource,TResult>(IEnumerable<TSource>, Func<TSource,TResult>)

Meghív egy átalakítási függvényt egy általános sorozat minden elemére, és visszaadja az eredményül kapott maximális értéket.

Max<TSource>(IEnumerable<TSource>, Func<TSource,Decimal>)

Meghív egy átalakítási függvényt egy sorozat minden elemére, és visszaadja a maximális Decimal értéket.

Max<TSource>(IEnumerable<TSource>, Func<TSource,Double>)

Meghív egy átalakítási függvényt egy sorozat minden elemére, és visszaadja a maximális Double értéket.

Max<TSource>(IEnumerable<TSource>, Func<TSource,Int32>)

Meghív egy átalakítási függvényt egy sorozat minden elemére, és visszaadja a maximális Int32 értéket.

Max<TSource>(IEnumerable<TSource>, Func<TSource,Int64>)

Meghív egy átalakítási függvényt egy sorozat minden elemére, és visszaadja a maximális Int64 értéket.

Max<TSource>(IEnumerable<TSource>, Func<TSource,Nullable<Decimal>>)

Meghív egy átalakítási függvényt egy sorozat minden elemére, és visszaadja a maximális null értékű Decimal értéket.

Max<TSource>(IEnumerable<TSource>, Func<TSource,Nullable<Double>>)

Meghív egy átalakítási függvényt egy sorozat minden elemére, és visszaadja a maximális null értékű Double értéket.

Max<TSource>(IEnumerable<TSource>, Func<TSource,Nullable<Int32>>)

Meghív egy átalakítási függvényt egy sorozat minden elemére, és visszaadja a maximális null értékű Int32 értéket.

Max<TSource>(IEnumerable<TSource>, Func<TSource,Nullable<Int64>>)

Meghív egy átalakítási függvényt egy sorozat minden elemére, és visszaadja a maximális null értékű Int64 értéket.

Max<TSource>(IEnumerable<TSource>, Func<TSource,Nullable<Single>>)

Meghív egy átalakítási függvényt egy sorozat minden elemére, és visszaadja a maximális null értékű Single értéket.

Max<TSource>(IEnumerable<TSource>, Func<TSource,Single>)

Meghív egy átalakítási függvényt egy sorozat minden elemére, és visszaadja a maximális Single értéket.

Max<TSource>(IEnumerable<TSource>, IComparer<TSource>)

Egy általános sorozat maximális értékét adja vissza.

Max<TSource>(IEnumerable<TSource>)

Egy általános sorozat maximális értékét adja vissza.

MaxBy<TSource,TKey>(IEnumerable<TSource>, Func<TSource,TKey>, IComparer<TKey>)

Egy általános sorozat maximális értékét adja vissza egy megadott kulcsválasztó függvény és kulcs-összehasonlító szerint.

MaxBy<TSource,TKey>(IEnumerable<TSource>, Func<TSource,TKey>)

Egy általános sorozat maximális értékét adja vissza egy megadott kulcsválasztó függvénynek megfelelően.

Min<TSource,TResult>(IEnumerable<TSource>, Func<TSource,TResult>)

Meghív egy átalakítási függvényt egy általános sorozat minden elemére, és visszaadja az eredményül kapott minimális értéket.

Min<TSource>(IEnumerable<TSource>, Func<TSource,Decimal>)

Meghív egy átalakítási függvényt egy sorozat minden elemére, és visszaadja a minimális Decimal értéket.

Min<TSource>(IEnumerable<TSource>, Func<TSource,Double>)

Meghív egy átalakítási függvényt egy sorozat minden elemére, és visszaadja a minimális Double értéket.

Min<TSource>(IEnumerable<TSource>, Func<TSource,Int32>)

Meghív egy átalakítási függvényt egy sorozat minden elemére, és visszaadja a minimális Int32 értéket.

Min<TSource>(IEnumerable<TSource>, Func<TSource,Int64>)

Meghív egy átalakítási függvényt egy sorozat minden elemére, és visszaadja a minimális Int64 értéket.

Min<TSource>(IEnumerable<TSource>, Func<TSource,Nullable<Decimal>>)

Meghív egy átalakítási függvényt egy sorozat minden elemére, és a minimális null értékű Decimal értéket adja vissza.

Min<TSource>(IEnumerable<TSource>, Func<TSource,Nullable<Double>>)

Meghív egy átalakítási függvényt egy sorozat minden elemére, és a minimális null értékű Double értéket adja vissza.

Min<TSource>(IEnumerable<TSource>, Func<TSource,Nullable<Int32>>)

Meghív egy átalakítási függvényt egy sorozat minden elemére, és a minimális null értékű Int32 értéket adja vissza.

Min<TSource>(IEnumerable<TSource>, Func<TSource,Nullable<Int64>>)

Meghív egy átalakítási függvényt egy sorozat minden elemére, és a minimális null értékű Int64 értéket adja vissza.

Min<TSource>(IEnumerable<TSource>, Func<TSource,Nullable<Single>>)

Meghív egy átalakítási függvényt egy sorozat minden elemére, és a minimális null értékű Single értéket adja vissza.

Min<TSource>(IEnumerable<TSource>, Func<TSource,Single>)

Meghív egy átalakítási függvényt egy sorozat minden elemére, és visszaadja a minimális Single értéket.

Min<TSource>(IEnumerable<TSource>, IComparer<TSource>)

Egy általános sorozat minimális értékét adja vissza.

Min<TSource>(IEnumerable<TSource>)

Egy általános sorozat minimális értékét adja vissza.

MinBy<TSource,TKey>(IEnumerable<TSource>, Func<TSource,TKey>, IComparer<TKey>)

Egy általános sorozat minimális értékét adja vissza egy megadott kulcsválasztó függvény és kulcs-összehasonlító szerint.

MinBy<TSource,TKey>(IEnumerable<TSource>, Func<TSource,TKey>)

Egy általános sorozat minimális értékét adja vissza egy megadott kulcsválasztó függvénynek megfelelően.

Nodes<T>(IEnumerable<T>)

A forrásgyűjtemény minden dokumentumának és elemének gyermekcsomópontjait adja vissza.

Normalize(String, NormalizationForm)

Normalizál egy sztringet a megadott Unicode-normalizálási űrlapra.

Normalize(String)

Egy sztringet a C Unicode normalizálási formára normalizál.

OfType<TResult>(IEnumerable)

Egy adott típus alapján szűri IEnumerable egy adott elem elemeit.

Order<T>(IEnumerable<T>, IComparer<T>)

Növekvő sorrendbe rendezi a sorozat elemeit.

Order<T>(IEnumerable<T>)

Növekvő sorrendbe rendezi a sorozat elemeit.

OrderBy<TSource,TKey>(IEnumerable<TSource>, Func<TSource,TKey>, IComparer<TKey>)

Egy sorozat elemeit növekvő sorrendbe rendezi egy megadott összehasonlító használatával.

OrderBy<TSource,TKey>(IEnumerable<TSource>, Func<TSource,TKey>)

Egy sorozat elemeit növekvő sorrendbe rendezi egy kulcs alapján.

OrderByDescending<TSource,TKey>(IEnumerable<TSource>, Func<TSource,TKey>, IComparer<TKey>)

Egy sorozat elemeit csökkenő sorrendbe rendezi egy megadott összehasonlító használatával.

OrderByDescending<TSource,TKey>(IEnumerable<TSource>, Func<TSource,TKey>)

A sorozat elemeit egy kulcs alapján csökkenő sorrendbe rendezi.

OrderDescending<T>(IEnumerable<T>, IComparer<T>)

A sorozat elemeit csökkenő sorrendbe rendezi.

OrderDescending<T>(IEnumerable<T>)

A sorozat elemeit csökkenő sorrendbe rendezi.

Prepend<TSource>(IEnumerable<TSource>, TSource)

Értéket ad hozzá a sorozat elejéhez.

Remove<T>(IEnumerable<T>)

Eltávolítja a forrásgyűjtemény összes csomópontját a szülőcsomópontról.

Reverse<TSource>(IEnumerable<TSource>)

Megfordítja az elemek sorrendjét egy sorrendben.

RightJoin<TOuter,TInner,TKey,TResult>(IEnumerable<TOuter>, IEnumerable<TInner>, Func<TOuter,TKey>, Func<TInner,TKey>, Func<TOuter,TInner,TResult>, IEqualityComparer<TKey>)

Két sorozat elemeit korrelálja egyező kulcsok alapján. A megadott IEqualityComparer<T> érték a kulcsok összehasonlítására szolgál.

RightJoin<TOuter,TInner,TKey,TResult>(IEnumerable<TOuter>, IEnumerable<TInner>, Func<TOuter,TKey>, Func<TInner,TKey>, Func<TOuter,TInner,TResult>)

Két sorozat elemeit korrelálja egyező kulcsok alapján. Az alapértelmezett egyenlőség-összehasonlító a kulcsok összehasonlítására szolgál.

RightJoin<TOuter,TInner,TKey>(IEnumerable<TOuter>, IEnumerable<TInner>, Func<TOuter,TKey>, Func<TInner,TKey>, IEqualityComparer<TKey>)

A szöveget UTF-16 kódegységek sorozataként jelöli.

Select<TSource,TResult>(IEnumerable<TSource>, Func<TSource,Int32,TResult>)

Az elem indexének beépítésével a sorozat minden elemét új formába alakítja.

Select<TSource,TResult>(IEnumerable<TSource>, Func<TSource,TResult>)

A sorozat egyes elemeit új űrlapra alakítja.

SelectMany<TSource,TCollection,TResult>(IEnumerable<TSource>, Func<TSource,IEnumerable<TCollection>>, Func<TSource,TCollection,TResult>)

Egy sorozat egyes elemeit egy-egy IEnumerable<T>sorozatra kivetíti, az eredményül kapott sorozatokat egy sorozatba alakítja, és meghív egy eredményválasztó függvényt az egyes elemeken.

SelectMany<TSource,TCollection,TResult>(IEnumerable<TSource>, Func<TSource,Int32,IEnumerable<TCollection>>, Func<TSource,TCollection,TResult>)

Egy sorozat egyes elemeit egy-egy IEnumerable<T>sorozatra kivetíti, az eredményül kapott sorozatokat egy sorozatba alakítja, és meghív egy eredményválasztó függvényt az egyes elemeken. Az egyes forráselemek indexét az elem köztes, előre jelzett formájában használja a rendszer.

SelectMany<TSource,TResult>(IEnumerable<TSource>, Func<TSource,IEnumerable<TResult>>)

Egy sorozat egyes elemeit egy-egy IEnumerable<T> sorozatra alakítja, és az eredményül kapott sorozatokat egy sorozatba simítja.

SelectMany<TSource,TResult>(IEnumerable<TSource>, Func<TSource,Int32,IEnumerable<TResult>>)

A sorozat egyes elemeit egy IEnumerable<T>- és egybesimítja, és az eredményül kapott sorozatokat egy sorozattá alakítja. Az egyes forráselemek indexét az elem előre jelzett formájában használja a rendszer.

SequenceEqual<TSource>(IEnumerable<TSource>, IEnumerable<TSource>, IEqualityComparer<TSource>)

Meghatározza, hogy két sorozat egyenlő-e, ha az elemeket egy megadott IEqualityComparer<T>használatával hasonlítja össze.

SequenceEqual<TSource>(IEnumerable<TSource>, IEnumerable<TSource>)

Meghatározza, hogy két sorozat egyenlő-e azzal, hogy összehasonlítja az elemeket az alapértelmezett egyenlőség-összehasonlító használatával a típusukhoz.

Shuffle<TSource>(IEnumerable<TSource>)

A sorozat elemeinek sorrendje össze van fonva.

Single<TSource>(IEnumerable<TSource>, Func<TSource,Boolean>)

Egy adott feltételnek megfelelő sorozat egyetlen elemét adja vissza, és kivételt eredményez, ha több ilyen elem is létezik.

Single<TSource>(IEnumerable<TSource>)

Egy sorozat egyetlen elemét adja vissza, és kivételt ad vissza, ha nincs pontosan egy elem a sorozatban.

SingleOrDefault<TSource>(IEnumerable<TSource>, Func<TSource,Boolean>, TSource)

A szekvencia egyetlen olyan elemét adja vissza, amely megfelel egy megadott feltételnek, vagy egy megadott alapértelmezett értéket, ha nincs ilyen elem; ez a metódus kivételt eredményez, ha több elem is megfelel a feltételnek.

SingleOrDefault<TSource>(IEnumerable<TSource>, Func<TSource,Boolean>)

Egy sorozat egyetlen olyan elemét adja vissza, amely megfelel egy megadott feltételnek vagy egy alapértelmezett értéknek, ha nincs ilyen elem; ez a metódus kivételt eredményez, ha több elem is megfelel a feltételnek.

SingleOrDefault<TSource>(IEnumerable<TSource>, TSource)

Egy sorozat egyetlen elemét adja vissza, vagy egy megadott alapértelmezett értéket, ha a sorozat üres; ez a metódus kivételt eredményez, ha a sorrendben több elem is szerepel.

SingleOrDefault<TSource>(IEnumerable<TSource>)

Egy sorozat egyetlen elemét adja vissza, vagy egy alapértelmezett értéket, ha a sorozat üres; ez a metódus kivételt eredményez, ha a sorrendben több elem is szerepel.

Skip<TSource>(IEnumerable<TSource>, Int32)

Adott számú elemet ad át egy sorozatban, majd visszaadja a fennmaradó elemeket.

SkipLast<TSource>(IEnumerable<TSource>, Int32)

Egy új, számbavételre alkalmas gyűjteményt ad vissza, amely a forrásgyűjtemény utolsó source elemeiből kihagyott count elemeket tartalmazza.

SkipWhile<TSource>(IEnumerable<TSource>, Func<TSource,Boolean>)

A sorozat elemeit addig adja át, amíg egy megadott feltétel igaz, majd visszaadja a fennmaradó elemeket.

SkipWhile<TSource>(IEnumerable<TSource>, Func<TSource,Int32,Boolean>)

A sorozat elemeit addig adja át, amíg egy megadott feltétel igaz, majd visszaadja a fennmaradó elemeket. Az elem indexe a predikátumfüggvény logikájában használatos.

Sum<TSource>(IEnumerable<TSource>, Func<TSource,Decimal>)

Kiszámítja az értékek sorozatának Decimal összegét, amelyet egy átalakítási függvény meghívásával kapunk a bemeneti sorozat egyes elemeire.

Sum<TSource>(IEnumerable<TSource>, Func<TSource,Double>)

Kiszámítja az értékek sorozatának Double összegét, amelyet egy átalakítási függvény meghívásával kapunk a bemeneti sorozat egyes elemeire.

Sum<TSource>(IEnumerable<TSource>, Func<TSource,Int32>)

Kiszámítja az értékek sorozatának Int32 összegét, amelyet egy átalakítási függvény meghívásával kapunk a bemeneti sorozat egyes elemeire.

Sum<TSource>(IEnumerable<TSource>, Func<TSource,Int64>)

Kiszámítja az értékek sorozatának Int64 összegét, amelyet egy átalakítási függvény meghívásával kapunk a bemeneti sorozat egyes elemeire.

Sum<TSource>(IEnumerable<TSource>, Func<TSource,Nullable<Decimal>>)

Kiszámítja azoknak a null értékű Decimal értékeknek az összegét, amelyeket egy átalakító függvény meghívásával kapunk a bemeneti sorozat egyes elemeire.

Sum<TSource>(IEnumerable<TSource>, Func<TSource,Nullable<Double>>)

Kiszámítja azoknak a null értékű Double értékeknek az összegét, amelyeket egy átalakító függvény meghívásával kapunk a bemeneti sorozat egyes elemeire.

Sum<TSource>(IEnumerable<TSource>, Func<TSource,Nullable<Int32>>)

Kiszámítja azoknak a null értékű Int32 értékeknek az összegét, amelyeket egy átalakító függvény meghívásával kapunk a bemeneti sorozat egyes elemeire.

Sum<TSource>(IEnumerable<TSource>, Func<TSource,Nullable<Int64>>)

Kiszámítja azoknak a null értékű Int64 értékeknek az összegét, amelyeket egy átalakító függvény meghívásával kapunk a bemeneti sorozat egyes elemeire.

Sum<TSource>(IEnumerable<TSource>, Func<TSource,Nullable<Single>>)

Kiszámítja azoknak a null értékű Single értékeknek az összegét, amelyeket egy átalakító függvény meghívásával kapunk a bemeneti sorozat egyes elemeire.

Sum<TSource>(IEnumerable<TSource>, Func<TSource,Single>)

Kiszámítja az értékek sorozatának Single összegét, amelyet egy átalakítási függvény meghívásával kapunk a bemeneti sorozat egyes elemeire.

Take<TSource>(IEnumerable<TSource>, Int32)

Megadott számú összefüggő elemet ad vissza a sorozat kezdetétől kezdve.

Take<TSource>(IEnumerable<TSource>, Range)

Egy sorozat egy adott összefüggő elemtartományát adja vissza.

TakeLast<TSource>(IEnumerable<TSource>, Int32)

Egy új, számbavételre alkalmas gyűjteményt ad vissza, amely az utolsó count elemeket sourcetartalmazza.

TakeWhile<TSource>(IEnumerable<TSource>, Func<TSource,Boolean>)

Egy sorozat elemeit adja vissza mindaddig, amíg egy megadott feltétel igaz.

TakeWhile<TSource>(IEnumerable<TSource>, Func<TSource,Int32,Boolean>)

Egy sorozat elemeit adja vissza mindaddig, amíg egy megadott feltétel igaz. Az elem indexe a predikátumfüggvény logikájában használatos.

ToArray<TSource>(IEnumerable<TSource>)

Tömböt hoz létre egy IEnumerable<T>.

ToAsyncEnumerable<TSource>(IEnumerable<TSource>)

Átalakítja az egyiket IEnumerable<T>IAsyncEnumerable<T>.

ToDictionary<TSource,TKey,TElement>(IEnumerable<TSource>, Func<TSource,TKey>, Func<TSource,TElement>, IEqualityComparer<TKey>)

Létrehoz egy Dictionary<TKey,TValue>IEnumerable<T> adott kulcsválasztó függvény, egy összehasonlító és egy elemválasztó függvény alapján.

ToDictionary<TSource,TKey,TElement>(IEnumerable<TSource>, Func<TSource,TKey>, Func<TSource,TElement>)

Létrehoz egy Dictionary<TKey,TValue>IEnumerable<T> megadott kulcsválasztó és elemválasztó függvény alapján.

ToDictionary<TSource,TKey>(IEnumerable<TSource>, Func<TSource,TKey>, IEqualityComparer<TKey>)

Létrehoz egy Dictionary<TKey,TValue>IEnumerable<T> adott kulcsválasztó függvényt és kulcs-összehasonlítót.

ToDictionary<TSource,TKey>(IEnumerable<TSource>, Func<TSource,TKey>)

Egy megadott kulcsválasztó függvény alapján hoz létre egy Dictionary<TKey,TValue>IEnumerable<T> értéket.

ToFrozenDictionary<TSource,TKey,TElement>(IEnumerable<TSource>, Func<TSource,TKey>, Func<TSource,TElement>, IEqualityComparer<TKey>)

Létrehoz egy FrozenDictionary<TKey,TValue>IEnumerable<T> megadott kulcsválasztó és elemválasztó függvény alapján.

ToFrozenDictionary<TSource,TKey>(IEnumerable<TSource>, Func<TSource,TKey>, IEqualityComparer<TKey>)

Létrehoz egy FrozenDictionary<TKey,TValue> megadott kulcsválasztó függvényt IEnumerable<T> .

ToFrozenSet<T>(IEnumerable<T>, IEqualityComparer<T>)

Létrehoz egy FrozenSet<T> értéket a megadott értékekkel.

ToHashSet<TSource>(IEnumerable<TSource>, IEqualityComparer<TSource>)

Létrehoz egy HashSet<T> olyan eszközt, IEnumerable<T> amely a comparer kulcsok összehasonlítására használható.

ToHashSet<TSource>(IEnumerable<TSource>)

Létrehoz egy HashSet<T>IEnumerable<T>.

ToImmutableArray<TSource>(IEnumerable<TSource>)

Módosíthatatlan tömböt hoz létre a megadott gyűjteményből.

ToImmutableDictionary<TSource,TKey,TValue>(IEnumerable<TSource>, Func<TSource,TKey>, Func<TSource,TValue>, IEqualityComparer<TKey>, IEqualityComparer<TValue>)

Számba és átalakít egy sorozatot, és a megadott kulcs- és érték-összehasonlítók használatával módosíthatatlan szótárt hoz létre a tartalmából.

ToImmutableDictionary<TSource,TKey,TValue>(IEnumerable<TSource>, Func<TSource,TKey>, Func<TSource,TValue>, IEqualityComparer<TKey>)

Számba és átalakít egy sorozatot, és a megadott kulcs-összehasonlító használatával módosíthatatlan szótárt hoz létre a tartalmából.

ToImmutableDictionary<TSource,TKey,TValue>(IEnumerable<TSource>, Func<TSource,TKey>, Func<TSource,TValue>)

Számbavétele és átalakítása egy sorozat, és létrehoz egy nem módosítható szótár a tartalmát.

ToImmutableDictionary<TSource,TKey>(IEnumerable<TSource>, Func<TSource,TKey>, IEqualityComparer<TKey>)

Egy szekvencia valamilyen átalakításán alapuló nem módosítható szótárt hoz létre.

ToImmutableDictionary<TSource,TKey>(IEnumerable<TSource>, Func<TSource,TKey>)

Egy nem módosítható szótárat hoz létre egy meglévő elemgyűjteményből, amely egy átalakítási függvényt alkalmaz a forráskulcsokra.

ToImmutableHashSet<TSource>(IEnumerable<TSource>, IEqualityComparer<TSource>)

Számba veszi a sorozatot, módosíthatatlan kivonatkészletet hoz létre a tartalmából, és a megadott egyenlőség-összehasonlítót használja a készlettípushoz.

ToImmutableHashSet<TSource>(IEnumerable<TSource>)

Számba ad egy sorozatot, és a tartalma nem módosítható kivonatkészletet hoz létre.

ToImmutableList<TSource>(IEnumerable<TSource>)

Számba ad egy sorozatot, és megváltoztathatatlan listát hoz létre annak tartalmáról.

ToImmutableSortedDictionary<TSource,TKey,TValue>(IEnumerable<TSource>, Func<TSource,TKey>, Func<TSource,TValue>, IComparer<TKey>, IEqualityComparer<TValue>)

Számba és átalakít egy sorozatot, és a megadott kulcs- és érték-összehasonlítók használatával módosíthatatlan rendezési szótárt hoz létre a tartalmaiból.

ToImmutableSortedDictionary<TSource,TKey,TValue>(IEnumerable<TSource>, Func<TSource,TKey>, Func<TSource,TValue>, IComparer<TKey>)

Számbavesz és átalakít egy sorozatot, és a megadott kulcs-összehasonlító használatával módosíthatatlan rendezési szótárt hoz létre a tartalmaiból.

ToImmutableSortedDictionary<TSource,TKey,TValue>(IEnumerable<TSource>, Func<TSource,TKey>, Func<TSource,TValue>)

Számbavétele és átalakítása egy sorozat, és létrehoz egy nem módosítható rendezett szótár a tartalmát.

ToImmutableSortedSet<TSource>(IEnumerable<TSource>, IComparer<TSource>)

Számba veszi a sorozatot, megváltoztathatatlan rendezési halmazt hoz létre, és a megadott összehasonlítót használja.

ToImmutableSortedSet<TSource>(IEnumerable<TSource>)

Számba ad egy sorozatot, és megváltoztathatatlan rendezésű halmazt hoz létre annak tartalmából.

ToList<TSource>(IEnumerable<TSource>)

Létrehoz egy List<T>IEnumerable<T>.

ToLookup<TSource,TKey,TElement>(IEnumerable<TSource>, Func<TSource,TKey>, Func<TSource,TElement>, IEqualityComparer<TKey>)

Létrehoz egy Lookup<TKey,TElement>IEnumerable<T> adott kulcsválasztó függvény, egy összehasonlító és egy elemválasztó függvény alapján.

ToLookup<TSource,TKey,TElement>(IEnumerable<TSource>, Func<TSource,TKey>, Func<TSource,TElement>)

Létrehoz egy Lookup<TKey,TElement>IEnumerable<T> megadott kulcsválasztó és elemválasztó függvény alapján.

ToLookup<TSource,TKey>(IEnumerable<TSource>, Func<TSource,TKey>, IEqualityComparer<TKey>)

Létrehoz egy Lookup<TKey,TElement>IEnumerable<T> adott kulcsválasztó függvényt és kulcs-összehasonlítót.

ToLookup<TSource,TKey>(IEnumerable<TSource>, Func<TSource,TKey>)

Egy megadott kulcsválasztó függvény alapján hoz létre egy Lookup<TKey,TElement>IEnumerable<T> értéket.

TryGetNonEnumeratedCount<TSource>(IEnumerable<TSource>, Int32)

Megkísérli meghatározni a sorozat elemeinek számát enumerálás kényszerítése nélkül.

Union<TSource>(IEnumerable<TSource>, IEnumerable<TSource>, IEqualityComparer<TSource>)

Két sorozat halmazának egyesítését állítja elő egy megadott IEqualityComparer<T>paranccsel.

Union<TSource>(IEnumerable<TSource>, IEnumerable<TSource>)

Két sorozat egyesítését állítja elő az alapértelmezett egyenlőség-összehasonlító használatával.

UnionBy<TSource,TKey>(IEnumerable<TSource>, IEnumerable<TSource>, Func<TSource,TKey>, IEqualityComparer<TKey>)

Két szekvencia halmazegyesítését állítja elő egy megadott kulcsválasztó függvény szerint.

UnionBy<TSource,TKey>(IEnumerable<TSource>, IEnumerable<TSource>, Func<TSource,TKey>)

Két szekvencia halmazegyesítését állítja elő egy megadott kulcsválasztó függvény szerint.

Where<TSource>(IEnumerable<TSource>, Func<TSource,Boolean>)

Egy predikátum alapján szűri az értékek sorozatát.

Where<TSource>(IEnumerable<TSource>, Func<TSource,Int32,Boolean>)

Egy predikátum alapján szűri az értékek sorozatát. Az egyes elemek indexét a predikátumfüggvény logikája használja.

Zip<TFirst,TSecond,TResult>(IEnumerable<TFirst>, IEnumerable<TSecond>, Func<TFirst,TSecond,TResult>)

Egy megadott függvényt alkalmaz a két sorozat megfelelő elemeire, és az eredmények sorozatát eredményezi.

Zip<TFirst,TSecond,TThird>(IEnumerable<TFirst>, IEnumerable<TSecond>, IEnumerable<TThird>)

A három megadott sorozat elemeit tartalmazó vonássorozatot hoz létre.

Zip<TFirst,TSecond>(IEnumerable<TFirst>, IEnumerable<TSecond>)

A két megadott sorozat elemeit tartalmazó vonássorozatot hoz létre.

A következőre érvényes:

Szálbiztonság

Ez a típus szálbiztos.

Lásd még