2009-11-27 1 views
24

In C können Sie Konstanten wie diesesWie definiert man Konstanten in Visual C# wie #define in C?

#define NUMBER 9 

definieren, so dass überall dort, wo Nummer im Programm erscheint es mit 9. Aber Visual C# tut dies nicht ersetzt wird. Wie wird es gemacht?

+0

Ein besserer Anwendungsfall für C#: '#define sometype typeof (MyClass)', für Dinge zu halten D.R.Y. wenn etwas wie 'SomeMethod ()' aufgerufen wird. –

Antwort

48
public const int NUMBER = 9; 

Sie müssten es in einer Klasse irgendwo setzen, und würde die Nutzung ClassName.NUMBER

+3

Wenn es kein Makro ist, warum haben die schrecklichen All Caps Namensgebung? Könnte auch der Konstante einen aussagekräftigen Namen geben und sie als eine Konstante betrachten, anstatt sie als Makro zu betrachten. –

+2

Gibt es auch eine Möglichkeit, programmweite Variablen zu definieren, die nicht mit einer Klasse aufgerufen werden müssen? – MichaelvdNet

+2

@MrUniverse Ich stimme dir zu, ich hasse es, wenn ich 'Constants.SECURITY_KEY' sehe. Ich bevorzuge 'Constants.SecurityKey'. –

15

Sie können dies nicht in C# tun. Verwenden Sie stattdessen eine const int.

13

prüfen How to: Define Constants in C# auf MSDN sein:

In C# die #define Präprozessor Richtlinie nicht verwendet werden können, Definieren Konstanten in der Art und Weise, die in C und C++ typischerweise ist.

13
static class Constants 
{ 
    public const int MIN_LENGTH = 5; 
    public const int MIN_WIDTH = 5; 
    public const int MIN_HEIGHT = 6; 
} 

// elsewhere 
public CBox() 
{ 
    length = Constants.MIN_LENGTH; 
    width = Constants.MIN_WIDTH; 
    height = Constants.MIN_HEIGHT; 
} 
+5

Willkommen auf SO, hier ist es eine gute Praxis zu erklären, warum Sie Ihre Lösung verwenden und nicht nur wie. Das wird Ihre Antwort wertvoller machen und dem Leser helfen, besser zu verstehen, wie Sie es tun. Ich schlage auch vor, dass Sie einen Blick auf unsere FAQ werfen: http://stackoverflow.com/faq. – ForceMagic

+2

Wenn es kein Makro ist, warum haben die hässlichen All Caps Namensgebung? Sie können ihnen auch sinnvolle Namen geben und sie als gültige Konstanten betrachten, anstatt so zu tun, als wären sie Makros. –

1

in C-Sprache: #define (zB #define Zähler 100)

in Assemblersprache: equ (zB Gegen EQU 100)

in C#: according to msdn refrence: Sie verwenden #define, um ein Symbol zu definieren. Wenn Sie das Symbol als Ausdruck verwenden, das die #if Richtlinie übergeben wird, wird der Ausdruck true zu bewerten, wie das folgende Beispiel zeigt:

# define DEBUG

Die #define Richtlinie nicht konstante Werte zu erklären, verwendet werden, wie typischerweise in C und C++ gemacht. Konstanten in C# sind am besten als statische Member einer Klasse oder Struktur definiert. Wenn Sie mehrere solcher Konstanten haben, sollten Sie eine separate "Konstanten" -Klasse erstellen, um sie zu speichern.

0

In C# haben wir pro MSDN-Bibliothek das Schlüsselwort "const", das die Arbeit des Schlüsselworts "#define" in anderen Sprachen ausführt.

"... wenn der Compiler im C# Quellcode (zB Monate) auf einen konstanten Bezeichner stößt, setzt er den Literalwert direkt in den Intermediate Language (IL) Code ein, der erzeugt wird." (https://msdn.microsoft.com/en-us/library/ms173119.aspx)

Initialisieren Sie Konstanten zum Zeitpunkt der Deklaration, da sie nicht geändert werden.

public const int cMonths = 12; 
Verwandte Themen