CA1834: StringBuilder.Append(char) használata egy karakteres sztringekhez

Tulajdonság Érték
Szabályazonosító CA1834
Cím StringBuilder.Append(char) használata egy karakteres stringhez
Kategória Teljesítmény
A javítás romboló vagy nem romboló Nem törhető
Alapértelmezés szerint engedélyezve a .NET 10-ben Javaslatként
Alkalmazandó nyelvek C# és Visual Basic

Ok

Ez a szabály akkor aktiválódik, amikor egy egységhosszúságú karakterláncot ad át a Append metódusnak.

Szabály leírása

Ha egységhosszúságú sztringgel hívja a StringBuilder.Append, fontolja meg, hogy const string helyett const char használ, a teljesítmény javítása érdekében.

Szabálysértések kijavítása

A szabálysértés manuálisan is kijavítható, vagy bizonyos esetekben a Gyorsműveletek segítségével kijavíthatja a kódot a Visual Studióban. Példák:

1. példa

Egységhosszú szöveges literállal való StringBuilder.Append hívások:

using System;
using System.Text;

namespace TestNamespace
{
    class TestClass
    {
        private void TestMethod()
        {
            StringBuilder sb = new StringBuilder();
            sb.Append("a");
        }
    }
}

Tipp.

Ehhez a szabályhoz kódjavítás érhető el a Visual Studióban. A használathoz helyezze a kurzort a szabálysértésre, és nyomja le a Ctrl+ billentyűt. (pont). A megjelenő lehetőségek listájából válassza ki az "StringBuilder.Append(char)" lehetőséget, ha alkalmazható.

A CA1834 kódjavítása – StringBuilder.Append(char) használata egy karakteres sztringekhez

A Visual Studio által alkalmazott javítás:

using System;
using System.Text;

namespace TestNamespace
{
    class TestClass
    {
        private void TestMethod()
        {
            StringBuilder sb = new StringBuilder();
            sb.Append('a');
        }
    }
}

Bizonyos esetekben például egy egységhosszúságú const string osztálymező használatakor a Visual Studio nem javasol kódjavítást (de az elemző továbbra is aktiválódik). Ezek a példányok manuális javítást igényelnek.

2. példa

Egységhosszúságú osztálymezővel kapcsolatos StringBuilder.Append meghívásokconst string:

using System;
using System.Text;

namespace TestNamespace
{
    public class Program
    {
        public const string unitString = "a";

        static void Main(string[] args)
        {
            StringBuilder sb = new StringBuilder();
            sb.Append(unitString);
        }
    }
}

A gondos elemzés után az itt szereplőt unitString-t egy char-re cserélheti anélkül, hogy buildelési hibákat okozna.

using System;
using System.Text;

namespace TestNamespace
{
    public class Program
    {
        public const char unitString = 'a';

        static void Main(string[] args)
        {
            StringBuilder sb = new StringBuilder();
            sb.Append(unitString);
        }
    }
}

Mikor kell letiltani a figyelmeztetéseket?

Figyelmen kívül hagyható ennek a szabálynak a megsértése, ha nem aggódik a teljesítmény javítása miatt a StringBuilder használata során.

Figyelmeztetés mellőzése

Ha csak egyetlen szabálysértést szeretne letiltani, adjon hozzá előfeldolgozási irányelveket a forrásfájlhoz a szabály letiltásához és újbóli engedélyezéséhez.

#pragma warning disable CA1834
// The code that's violating the rule is on this line.
#pragma warning restore CA1834

Ha le szeretné tiltani egy fájl, mappa vagy projekt szabályát, állítsa annak súlyosságát none a konfigurációs fájlban.

[*.{cs,vb}]
dotnet_diagnostic.CA1834.severity = none

További információ: Kódelemzési figyelmeztetések letiltása.

Lásd még