Heim Backend-Entwicklung C#.Net-Tutorial Der Unterschied zwischen const und readonly in c#.net

Der Unterschied zwischen const und readonly in c#.net

Jan 19, 2017 am 11:07 AM

(1) readonly und const werden beide zum Markieren von Konstanten verwendet.
(2) Die Initialisierungsaufgabe ist unterschiedlich.
Const, das durch const geändert wurde, muss gleichzeitig mit der Deklaration ein Wert zugewiesen werden. Zum Beispiel:

public class Class1  
{  
    public const int MaxValue = 10;       //正确声明  
    public const MInValue;                   //错误:常量字段要求提供一个值  
    public Class1()  
    {  
        MinValue = 10;  
    }  
}
Nach dem Login kopieren

schreibgeschützte Felder können während der Initialisierung (Deklaration oder Konstruktor) zugewiesen werden. Daher können schreibgeschützte Felder je nach verwendetem Konstruktor unterschiedliche Werte haben.

public class Class1  
{  
    public readonly int c = 10;           //正确声明  
    public readonly int z;  
    public Class1()  
    {  
        z = 24;//正确  
    }  
    protected void Load()  
    {  
        z = 24;//错误:无法对只读的字段赋值(构造函数或变量初始值指定项中除外)  
    }  
}
Nach dem Login kopieren

readonly ist ein Instanzmitglied, sodass verschiedene Instanzen unterschiedliche konstante Werte haben können, was readonly flexibler macht.

public readonly Color Red = new Color(255, 0, 0);  
public readonly Color Green = new Color(0, 255, 0);  
public readonly Color Blue = new Color(0, 0, 255);
Nach dem Login kopieren

(3) const-Felder sind Konstanten zur Kompilierungszeit, während schreibgeschützte Felder für Laufzeitkonstanten verwendet werden können.
const erfordert, dass der Compiler zur Kompilierungszeit einen bestimmten Wert berechnen kann. Zur Kompilierungszeit wird jede Stelle, an der die Konstante aufgerufen wird, durch den berechneten Wert ersetzt. Daher können Sie keinen Wert aus einer Variablen extrahieren, um eine Konstante zu initialisieren.
readonly ermöglicht das Festlegen eines Felds auf eine Konstante, kann jedoch einige Operationen ausführen und seinen Anfangswert bestimmen. Da Readonly zur Berechnungszeit ausgeführt wird, kann es mit bestimmten Variablen initialisiert werden. Dieser Wert wird zur Laufzeit ermittelt.
(4) const ist standardmäßig statisch und readonly muss explizit deklariert werden, wenn es auf static gesetzt ist.
(5) Der durch const geänderte Werttyp ist ebenfalls begrenzt. Er kann nur einer der folgenden Typen sein (oder in die folgenden Typen konvertiert werden): sbyte, byte, short, ushort, int, uint, long , ulong, char, float, double, decimal, bool, string, enum type oder reference type. Beachten Sie, dass der Referenztyp, der als const deklariert werden kann, nur ein String oder ein anderer Referenztyp sein kann, dessen Wert null ist. readonly kann von jedem beliebigen Typ sein.
Das heißt, wenn wir eine const-Konstante benötigen und ihr Typ die Berechnung eines bestimmten Werts zur Kompilierungszeit einschränkt, können wir das Problem lösen, indem wir sie als statisch schreibgeschützt deklarieren. Aber es gibt immer noch einen kleinen Unterschied zwischen den beiden. Schauen Sie sich die beiden verschiedenen Dokumente unten an.
file1.cs

using System;  
namespace MyNamespace1  
{  
    public class MyClass1  
    {  
        public static readonly int myField = 10;  
    }  
}
Nach dem Login kopieren


file2.cs

namespace MyNamespace2  
{  
    public class MyClass1  
    {  
        public static void Main()  
        {  
            Console.WriteLine(MyNamespace1.MyClass1.myField);  
        }  
    }  
}
Nach dem Login kopieren

Die beiden Klassen gehören zu zwei Dateien file1.cs und file2.cs und werden separat kompiliert. Wenn die Domäne myField in der Datei file1.cs als statisch schreibgeschützt deklariert ist und wir den Wert von myField aus irgendeinem Grund auf 20 ändern, müssen wir beim Ausführen von file2 nur die Datei file1.cs in file1.dll neu kompilieren. exe Das heißt, Sie erhalten 20.
Wenn Sie jedoch static readonly in const ändern und dann den Initialisierungswert von myField ändern, müssen wir alle Dateien, die auf file1.dll verweisen, neu kompilieren, andernfalls ist das von uns referenzierte MyNamespace1.MyClass1.myField nicht wie erwartet . Dies ist besonders bei der Entwicklung großer Systeme zu beachten.
(6) Objekt, Array (Array) und Struktur (Struktur) können nicht als konstante Konstanten deklariert werden.

Das Obige ist der Unterschied zwischen const und readonly in c#.net. Weitere verwandte Inhalte finden Sie auf der chinesischen PHP-Website (www.php.cn)!


Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn

Heiße KI -Werkzeuge

Undresser.AI Undress

Undresser.AI Undress

KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover

AI Clothes Remover

Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool

Undress AI Tool

Ausziehbilder kostenlos

Clothoff.io

Clothoff.io

KI-Kleiderentferner

AI Hentai Generator

AI Hentai Generator

Erstellen Sie kostenlos Ai Hentai.

Heißer Artikel

R.E.P.O. Energiekristalle erklärten und was sie tun (gelber Kristall)
2 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌
Repo: Wie man Teamkollegen wiederbelebt
4 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌
Hello Kitty Island Abenteuer: Wie man riesige Samen bekommt
4 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌

Heiße Werkzeuge

Notepad++7.3.1

Notepad++7.3.1

Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version

SublimeText3 chinesische Version

Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1

Senden Sie Studio 13.0.1

Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6

Dreamweaver CS6

Visuelle Webentwicklungstools

SublimeText3 Mac-Version

SublimeText3 Mac-Version

Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Was ist die schreibgeschützte Funktion und wie wird die Funktion in Vue3 verwendet? Was ist die schreibgeschützte Funktion und wie wird die Funktion in Vue3 verwendet? May 10, 2023 pm 10:04 PM

Detaillierte Erläuterung der Readonly-Funktion in Vue3 Readonly ist eine neue Funktion in Vue3, mit der ein reaktionsfähiges Objekt in ein schreibgeschütztes Objekt umgewandelt wird. Durch die Verwendung von readonly kann sichergestellt werden, dass ein Objekt nur gelesen und nicht geändert werden kann, wodurch die Stabilität und Sicherheit der Anwendung verbessert wird. In Vue3 können Sie die readonly-Funktion verwenden, um ein Objekt in ein schreibgeschütztes Objekt zu konvertieren, zum Beispiel: import{readonly}from'vue'conststate=readonly({count:0}) Im obigen Code ist das Statusobjekt in ein schreibgeschütztes Objekt konvertiert, was state.count bedeutet

Wie sind die Berufsaussichten von C#? Wie sind die Berufsaussichten von C#? Oct 19, 2023 am 11:02 AM

Ganz gleich, ob Sie Anfänger oder erfahrener Profi sind: Die Beherrschung von C# ebnet den Weg für Ihre Karriere.

Teilen Sie mehrere .NET-Open-Source-KI- und LLM-bezogene Projekt-Frameworks Teilen Sie mehrere .NET-Open-Source-KI- und LLM-bezogene Projekt-Frameworks May 06, 2024 pm 04:43 PM

Die Entwicklung von Technologien der künstlichen Intelligenz (KI) ist heute in vollem Gange und sie haben in verschiedenen Bereichen großes Potenzial und Einfluss gezeigt. Heute wird Dayao Ihnen 4 .NET Open-Source-KI-Modell-LLM-bezogene Projekt-Frameworks vorstellen und hofft, Ihnen einige Referenzen zu geben. https://github.com/YSGStudyHards/DotNetGuide/blob/main/docs/DotNet/DotNetProjectPicks.mdSemanticKernelSemanticKernel ist ein Open-Source-Softwareentwicklungskit (SDK), das für die Integration großer Sprachmodelle (LLM) wie OpenAI und Azure entwickelt wurde

Tiefes Verständnis von const in der C-Sprache Tiefes Verständnis von const in der C-Sprache Feb 18, 2024 pm 12:56 PM

Ausführliche Erklärung und Codebeispiele von const in C. In der C-Sprache wird das Schlüsselwort const zum Definieren von Konstanten verwendet, was bedeutet, dass der Wert der Variablen während der Programmausführung nicht geändert werden kann. Mit dem Schlüsselwort const können Variablen, Funktionsparameter und Funktionsrückgabewerte geändert werden. Dieser Artikel bietet eine detaillierte Analyse der Verwendung des Schlüsselworts const in der C-Sprache und stellt spezifische Codebeispiele bereit. const modifizierte Variable Wenn const zum Ändern einer Variablen verwendet wird, bedeutet dies, dass die Variable eine schreibgeschützte Variable ist und nicht geändert werden kann, sobald ihr ein Wert zugewiesen wurde. Zum Beispiel: constint

18 Möglichkeiten, das Problem zu beheben, dass der Audiodienst unter Windows 11 nicht reagiert 18 Möglichkeiten, das Problem zu beheben, dass der Audiodienst unter Windows 11 nicht reagiert Jun 05, 2023 pm 10:23 PM

Für die Audioausgabe und -eingabe sind bestimmte Treiber und Dienste erforderlich, damit sie unter Windows 11 wie erwartet funktionieren. Manchmal treten im Hintergrund Fehler auf, die zu Audioproblemen wie fehlender Audioausgabe, fehlenden Audiogeräten, verzerrtem Audio usw. führen. So beheben Sie, dass der Audiodienst unter Windows 11 nicht reagiert. Wir empfehlen Ihnen, mit den unten genannten Korrekturen zu beginnen und sich durch die Liste zu arbeiten, bis Sie Ihr Problem gelöst haben. Der Audiodienst reagiert unter Windows 11 aus verschiedenen Gründen möglicherweise nicht mehr. Mithilfe dieser Liste können Sie die meisten Probleme überprüfen und beheben, die verhindern, dass Audiodienste unter Windows 11 reagieren. Bitte befolgen Sie die entsprechenden Abschnitte unten, um Ihnen durch den Prozess zu helfen. Methode 1: Starten Sie den Audiodienst neu

So verwenden Sie const in der C-Sprache So verwenden Sie const in der C-Sprache Sep 20, 2023 pm 01:34 PM

const ist ein Schlüsselwort, das zum Deklarieren von Konstanten, const-Modifikatoren in Funktionsparametern, const-modifizierten Funktionsrückgabewerten und const-modifizierten Zeigern verwendet werden kann. Detaillierte Einführung: 1. Das Schlüsselwort const kann zum Deklarieren von Konstanten verwendet werden. Der Wert der Konstante kann während der Ausführung des Programms nicht geändert werden. Zeichen usw. oder ein benutzerdefinierter Datentyp; 2. Der const-Modifikator in den Funktionsparametern. Das Schlüsselwort const kann in den Parametern der Funktion verwendet werden, was angibt, dass der Parameter innerhalb der Funktion usw. nicht geändert werden kann.

Leistungsunterschiede zwischen Java-Framework und .NET-Framework Leistungsunterschiede zwischen Java-Framework und .NET-Framework Jun 03, 2024 am 09:19 AM

In Bezug auf die Verarbeitung von Anforderungen mit hoher Parallelität bietet .NETASP.NETCoreWebAPI eine bessere Leistung als JavaSpringMVC. Zu den Gründen gehören: AOT-Frühkompilierung, die die Startzeit verkürzt, wobei Entwickler für die Zuweisung und Freigabe von Objektspeicher verantwortlich sind.

Was sind die korrekten Verwendungen des Schlüsselworts const in C++-Funktionen? Was sind die korrekten Verwendungen des Schlüsselworts const in C++-Funktionen? Apr 11, 2024 pm 02:36 PM

Korrekte Verwendung des Schlüsselworts const in C++: Die Verwendung von const zum Ändern einer Funktion bedeutet, dass die Funktion die übergebenen Parameter oder Klassenmitglieder nicht ändert. Die Verwendung von const zum Deklarieren eines Funktionszeigers bedeutet, dass der Zeiger auf eine konstante Funktion zeigt.

See all articles