ca1802: استخدم القيم الحرفية الموقع المناسبة
TypeName |
UseLiteralsWhereAppropriate |
CheckId |
ca1802 |
Category |
Microsoft.الأداء |
تعطيل تغيير |
غير فاصلة |
السبب
A field is declared static and readonly (Shared and ReadOnly in Visual Basic), and is initialized with a value that is computable at compile time.
وصف القاعدة
The value of a static readonly field is computed at runtime when the static constructor for the declaring type is called. If the static readonly field is initialized when it is declared and a static constructor is not declared explicitly, the compiler emits a static constructor to initialize the field.
The value of a const field is computed at compile time and stored in the metadata, which increases runtime performance when compared to a static readonly field.
نظراً لتعيين القيمة إلى الحقل الهدف هو computable في وقت يحول برمجياً، قم بتغيير التعريف إلى constالحقل حيث القيمة هو حسابها في وقت التحويل البرمجي عوضاً عن في وقت التشغيل.
كيف إلى الإصلاح انتهاكات
إلى إصلاح انتهاكا لهذه قاعدة، قم باستبدال staticو readonlyمعدلات مع constالمعدل.
عند إلى منع التحذيرات
هو الأمن لمنع ظهور تحذير من القيم بالموضع هو قاعدة، أو dهوable قاعدة الكامل، إذا كان الأداء هو ليس من الأمور.
مثال
يوضح المثال التالي نوع، UseReadOnly، التي تخالف قاعدة نوع، UseConstant، الذي يفي بقاعدة.
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";
}
}