Megosztás a következőn keresztül:


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 sztringekhez
Kategória Teljesítmény
A javítás kompatibilitástörő vagy nem törik Nem törés
Alapértelmezés szerint engedélyezve a .NET 8-ban Javaslatként

Ok

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

Szabály leírása

Ha egységhosszúságú sztringgel hív, StringBuilder.Append fontolja meg const char az egységhossz const string helyett a teljesítmény növelését.

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. Examples:

1. példa

Egységhosszú sztringkonstans StringBuilder.Append meghívása:

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 a "StringBuilder.Append(char)" lehetőséget.

Code fix for CA1834 - Use StringBuilder.Append(char) for single character strings

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ú const string osztálymezővel kapcsolatos meghívásokStringBuilder.Append:

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 alábbiakat úgy módosíthatja, unitStringchar hogy ne okozzon buildelési hibákat.

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?

Nyugodtan el lehet tiltani a szabály megsértését, ha nem aggódik a teljesítmény javítása miatt a használat során StringBuilder.

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.

Kapcsolódó információk