57 votes

Stage de chaîne dans .Net Framework - Quels sont les avantages et quand utiliser le stage

Je souhaite connaître le processus et les éléments internes de l'internement de chaîne spécifique au framework .Net . J'aimerais également connaître les avantages de l'internement et les scénarios/situations dans lesquelles nous devrions utiliser l'internement en chaîne pour améliorer les performances. Bien que j'aie étudié le stage à partir du livre CLR de Jeffery Richter, je suis toujours confus et j'aimerais le savoir plus en détail.

[Modification] pour poser une question spécifique avec un exemple de code comme ci-dessous :

 private void MethodA()
{
    string s = "String"; // line 1 - interned literal as explained in the answer        

    //s.intern(); // line 2 - what would happen in line 3 if we uncomment this line, will it make any difference?
}

private bool MethodB(string compareThis)
{
    if (compareThis == "String") // line 3 - will this line use interning (with and without uncommenting line 2 above)?
    {
        return true;
    }
    return false;
}

27voto

Aliostad Points 47792

L'internat est un détail de mise en œuvre interne . Contrairement à la boxe , je ne pense pas qu'il y ait d'avantage à en savoir plus que ce que vous avez lu dans le livre de Richter.

Les avantages de la micro-optimisation des chaînes internes sont minimes et ne sont donc généralement pas recommandés.

Ceci le décrit probablement :

 class Program
{
    const string SomeString = "Some String"; // gets interned

    static void Main(string[] args)
    {
        var s1 = SomeString; // use interned string
        var s2 = SomeString; // use interned string
        var s = "String";
        var s3 = "Some " + s; // no interning 

        Console.WriteLine(s1 == s2); // uses interning comparison
        Console.WriteLine(s1 == s3); // do NOT use interning comparison
    }
}

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X