Maison >développement back-end >C++ >Comment puis-je mettre en majuscule la première lettre d'une chaîne en C# avec des performances optimales ?

Comment puis-je mettre en majuscule la première lettre d'une chaîne en C# avec des performances optimales ?

Susan Sarandon
Susan Sarandonoriginal
2025-01-16 13:44:00630parcourir

How Can I Capitalize the First Letter of a String in C# with Optimal Performance?

Mise en majuscule efficacement la première lettre de la chaîne C#

Présentation

La mise en majuscule de la première lettre d'une chaîne est une tâche courante dans de nombreuses applications de programmation. Afin d’optimiser les performances, il est crucial de choisir une méthode efficace. Cet article explore plusieurs façons d’implémenter la capitalisation en C# et se concentre sur l’analyse de leurs différences de performances.

Exemple de code

C# 8, .NET Core 3.0 ou .NET Standard 2.1

<code class="language-csharp">public static string FirstCharToUpper(this string input) =>
    input switch
    {
        null => throw new ArgumentNullException(nameof(input)),
        "" => throw new ArgumentException($"{nameof(input)} cannot be empty", nameof(input)),
        _ => string.Concat(input[0].ToString().ToUpper(), input.AsSpan(1))
    };</code>

C#8

<code class="language-csharp">public static string FirstCharToUpper(this string input) =>
    input switch
    {
        null => throw new ArgumentNullException(nameof(input)),
        "" => throw new ArgumentException($"{nameof(input)} cannot be empty", nameof(input)),
        _ => input[0].ToString().ToUpper() + input.Substring(1)
    };</code>

C#7

<code class="language-csharp">public static string FirstCharToUpper(this string input)
{
    switch (input)
    {
        case null: throw new ArgumentNullException(nameof(input));
        case "": throw new ArgumentException($"{nameof(input)} cannot be empty", nameof(input));
        default: return input[0].ToString().ToUpper() + input.Substring(1);
    }
}</code>

Ancienne version (déconseillée, performances médiocres)

<code class="language-csharp">public static string FirstCharToUpper(string input)
{
    if (String.IsNullOrEmpty(input))
        throw new ArgumentException("ARGH!");
    return input.First().ToString().ToUpper() + String.Join("", input.Skip(1));
}</code>
<code class="language-csharp">public static string FirstCharToUpper(string input)
{
    if (String.IsNullOrEmpty(input))
        throw new ArgumentException("ARGH!");
    return input.First().ToString().ToUpper() + input.Substring(1);
}</code>

Considérations relatives aux performances

Parmi ces extraits de code, la méthode avec le moins d'allocation de mémoire et la manipulation de chaînes la plus efficace a les meilleures performances. La première solution utilise ReadonlySpan<char> de .NET Core 3.0 ou .NET Standard 2.1, qui offre des performances supérieures par rapport aux autres méthodes.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn