Wie deklarieren Sie eine lokale Konstante in C#?
Wie deklarieren Sie eine lokale Konstante in C# ?
Wie in Java, können Sie Folgendes tun :
public void f(){
final int n = getNum(); //n declared constant
}
Wie auch in C# ? Ich habe versucht, mit readonly
und const
aber keiner scheint zu funktionieren.
Jegliche Hilfe würde sehr geschätzt werden.
Dank.
- Dies ist die lästige Unterlassung von C# in meiner kurzen Zeit mit ihm. Ich verwende const auf lokale Variablen in C++ die ganze Zeit für meine eigene Sicherheit, Vernunft, und die Lesbarkeit zu verbessern.
- stackoverflow.com/questions/443687/...
- danke für den link. Aber jetzt, wenn ich etwas schreiben für .NET, werde ich sicherlich mit F#. 🙂
Du musst angemeldet sein, um einen Kommentar abzugeben.
In C#, und Sie können nicht erstellen Sie eine Konstante, die abgerufen werden eine Methode.
Edit: Toten link
http://msdn.microsoft.com/en-us/library/e6w8fe1b(VS.71).aspxDieser doc sollte helfen:
https://docs.microsoft.com/en-us/dotnet/csharp/language-reference/keywords/const
final
undconst
verschiedene Bedeutungen haben. In C#, einerconst
Wert muss zur Kompilierzeit bekannt ist. Das eigentliche Problem ist, dass C# unterstützt keine lokalenreadonly
Variablen, das ist schade, denn Sie wäre praktisch.Deklarieren Sie eine lokale variable als iteration variable. Iteration Variablen sind schreibgeschützt
(Sie nicht Fragen, für eine hübsche Lösung).
var index=GetNum()
zuforeach
um den compiler zu zwingen " check my code.Ich bin mir nicht sicher, warum
readonly
undconst
hat nicht funktioniert für Sie, denn diese sind die Schlüsselwörter, die Sie benötigen. Verwenden Sieconst
wenn Sie ein literal (außer array-Literale) undreadonly
ansonsten:readonly
funktioniert nur auf Kategorie-Ebene (das heißt, Sie können nur auf Felder). Auch als Folge derconst
erfordern ein literal, es ist von Natur aus statisch, während einreadonly
Feld kann entweder statisch oder Instanz.Gibt es eine Art workaround, das erfordert, dass ReSharper. Man kann nicht readonly einheimischen, aber man kann zumindest erkennen, mutierte und Farbe anders.
Verwenden Sie die Schriftarten und Farben-Element Resharper Veränderliche Lokale Variable Identifier.
Für mich, ich habe die einheimischen farbigen Grau, und dann wählte ich ein Fett weiß für den mutierten Variablen (dieser ist mit einem dunklen theme). Dies bedeutet, dass jede variable, die geschrieben wird, um mehr als einmal zeigt sich hell im Vergleich zu Stammkunden. Sie können dann das tun, was Sie können, um zu versuchen, um zu vermeiden, dass eine mutierte variable, oder, wenn die Methode wirklich nicht verlangen, dann wird es zumindest hervorgehoben werden.
int x = 5; x = 3;
, x soll sich die Farbe ändern. Ich denke, es könnte die version sein, ja.Als der 2018-10-02, es ist nicht möglich, ein readonly-lokale in c#, aber es ist ein offenes Vorschlag für die Funktion, die Laufenden Diskussion.
Diese Artikel bietet eine nützliche Zusammenfassung.
In dem Beispiel, das Sie Gaben, die Sie benötigen, um die variable zu deklarieren als
static
, weil Sie die Initialisierung mit einem Aufruf der Methode. Wenn Sie die Initialisierung mit einem Konstanten Wert, wie 42, die Sie verwenden könnenconst
. Für Klassen, structs und arrays,readonly
funktionieren sollte.Vom MSDN.
Da C# kann man nicht erzwingen "const correctnes" (wie c++) wie auch immer, ich glaube nicht, dass es sehr nützlich. Da Funktionen sind sehr narrwoly Gültigkeitsbereich, es ist einfach nicht zu verlieren Aufsicht.