CA1802: Použít literály, případně
Název_typu |
UseLiteralsWhereAppropriate |
CheckId |
CA1802 |
Kategorie |
Microsoft.Performance |
Změnit rozdělení |
Bez rozdělení |
Příčina
Pole je deklarována jako static a readonly (Shared a ReadOnly v Visual Basic) a je inicializována s hodnotou, která je computable v době kompilace.
Popis pravidla
Hodnota staticreadonly pole je vypočítávána běhu při statický konstruktor pro deklarující typ volání.Pokud staticreadonly pole je inicializován, když je deklarována a statický konstruktor není deklarována explicitně, kompilátor vyzařuje statický konstruktor inicializace pole.
Hodnota const pole je vypočítána v době kompilace a uloženy v metadatech je ve srovnání se zvyšuje výkon runtime staticreadonly pole.
Hodnota přiřazená k cílové pole je computable v době kompilace, změna prohlášení k const pole tak, aby hodnota je vypočítávána v době kompilace místo za běhu.
Jak opravit porušení
Porušení tohoto pravidla opravíte nahradit static a readonly s modifikátory const modifikátor.
Při potlačení upozornění
Je bezpečné potlačí upozornění od tohoto pravidla nebo zakázat pravidla, pokud není výkon znepokojení.
Příklad
Následující příklad ukazuje typ, UseReadOnly, který porušuje pravidla a typ, UseConstant, který splňuje pravidla.
Imports System
Namespace PerformanceLibrary
' This class violates the rule.
Public Class UseReadOnly
Shared ReadOnly x As Integer = 3
Shared ReadOnly y As Double = x + 2.1
Shared ReadOnly s As String = "readonly"
End Class
' This class satisfies the rule.
Public Class UseConstant
Const x As Integer = 3
Const y As Double = x + 2.1
Const s As String = "const"
End Class
End Namespace
using System;
namespace PerformanceLibrary
{
// This class violates the rule.
public class UseReadOnly
{
static readonly int x = 3;
static readonly double y = x + 2.1;
static readonly string s = "readonly";
}
// This class satisfies the rule.
public class UseConstant
{
const int x = 3;
const double y = x + 2.1;
const string s = "const";
}
}