2009-11-27 22 views
24

En C se puede definir constantes como esto¿Cómo se definen las constantes en Visual C# como #define en C?

#define NUMBER 9 

por lo que dondequiera número aparece en el programa que se sustituye con 9. Sin embargo, Visual C# no hace esto. ¿Cómo se hace?

+0

Un mejor uso de los casos para C#: # define 'SomeType typeof (MiClase)', para su uso para mantener las cosas D.R.Y. cuando llamas algo como 'SomeMethod ()'. –

Respuesta

48
public const int NUMBER = 9; 

Se necesitaría para ponerlo en una clase alguna parte, y el uso sería ClassName.NUMBER

+3

Si no es una macro, ¿por qué nombrar todos los horribles topes? También podría darle a la constante un nombre significativo y considerarla una constante válida en lugar de pretender que es una macro. –

+2

¿Existe alguna manera de definir las variables de todo el programa que no necesitan ser llamadas usando una clase? – MichaelvdNet

+2

@MrUniverse Estoy de acuerdo contigo, odio cuando veo 'Constants.SECURITY_KEY'. Prefiero 'Constants.SecurityKey'. –

15

No puede hacer esto en C#. Use un const int en su lugar.

13

Comprobar How to: Define Constants in C# en MSDN:

En C# preprocesador Directiva #define no se puede utilizar para definir las constantes de la manera que normalmente es utilizada en C y C++.

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

Bienvenido a SO, aquí, es una buena práctica explicar por qué usar su solución y no solo cómo. Eso hará que su respuesta sea más valiosa y ayudará al lector a tener una mejor comprensión de cómo lo hace. También sugiero que eche un vistazo a nuestras preguntas frecuentes: http://stackoverflow.com/faq. – ForceMagic

+2

Si no es una macro, ¿por qué nombrar todos los horribles topes? Bien podría darles nombres significativos y considerarlos como constantes válidas en lugar de pretender que son macros. –

1

en lenguaje C: #define (por ejemplo, contador #define 100)

en lenguaje ensamblador: equ (equ por ejemplo, contador 100)

en C# idioma: according to msdn refrence: Utiliza #define para definir un símbolo. Cuando se utiliza el símbolo como la expresión que se pasa a la directiva #if, la expresión se evaluará como true, como muestra el siguiente ejemplo:

# define DEBUG

La directiva #define no se puede utilizar para declarar valores constantes como es típicamente hecho en C y C++. Las constantes en C# se definen mejor como miembros estáticos de una clase o estructura. Si tiene varias constantes, considere crear una clase separada de "Constantes" para contenerlas.

0

En C#, por biblioteca de MSDN, tenemos la palabra clave "const" que hace el trabajo de la palabra clave "#define" en otros idiomas.

"... cuando el compilador encuentra un identificador constante en C# código fuente (por ejemplo, meses), se sustituye el valor literal directamente en el lenguaje intermedio (IL) de código que produce." (https://msdn.microsoft.com/en-us/library/ms173119.aspx)

Inicializa constantes en el momento de la declaración ya que no hay cambios.

public const int cMonths = 12; 
Cuestiones relacionadas