2009-11-27 1 views
24

В C можно определить константы, как этотКак определить константы в Visual C#, как #define в C?

#define NUMBER 9 

так, что везде, где появляется число в программе оно заменяется на 9. Но Visual C# не делает этого. Как это делается?

+0

Лучше вариант использования для C#: '#define SomeType TypeOf (MyClass)', для использования, чтобы держать вещи D.R.Y. при вызове чего-то типа 'SomeMethod ()'. –

ответ

48
public const int NUMBER = 9; 

Вы должны были бы поместить его в классе где-нибудь, а использование было бы ClassName.NUMBER

+3

Если это не макрос, почему есть отвратительные имена всех кепок? Мог бы также дать константу значимое имя и считать его действительным константой, а не притворяться, что это макрос. –

+2

Есть ли способ определить программные переменные, которые не нужно вызывать с помощью класса? – MichaelvdNet

+2

@MrUniverse Я согласен с вами, я ненавижу, когда вижу 'Constants.SECURITY_KEY'. Я предпочитаю 'Constants.SecurityKey'. –

15

Вы не можете сделать это на C#. Вместо этого используйте const int.

13

Проверить How to: Define Constants in C# на MSDN:

В C# препроцессор директива #define не может быть использована для определения констант в способе, который обычно равен , используемому в C и 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

Добро пожаловать на SO, здесь, это хорошая практика, чтобы объяснить, почему использовать ваше решение, а не только как. Это сделает ваш ответ более ценным и поможет читателю лучше понять, как вы это делаете. Я также предлагаю вам ознакомиться с нашими часто задаваемыми вопросами: http://stackoverflow.com/faq. – ForceMagic

+2

Если это не макрос, почему есть отвратительные имена всех кепок? Могут также дать им значимые имена и рассмотреть их действительные константы, а не притворяться, что они являются макросами. –

1

в языке Си: #define (например, #define счетчика 100)

на языке ассемблера: фас (например, счетчик фас 100)

В C# языке: according to msdn refrence: Для определения символа используется #define. При использовании символа в качестве выражения, который передается в #if директивы, выражение будет вычисляться так, как показано в следующем примере:

# define DEBUG

директива #define не может быть использован для объявления постоянных значений, как это обычно сделанные в C и C++. Константы в C# лучше всего определяются как статические члены класса или структуры. Если у вас есть несколько таких констант, подумайте о создании отдельного класса «Константы» для их хранения.

0

В C#, для каждой библиотеки MSDN, у нас есть ключевое слово "const", которое выполняет работу ключевого слова #define на других языках.

«... когда компилятор встречает постоянный идентификатор в исходном коде C# (например, месяцев), он заменяет буквальное значение непосредственно на код промежуточного языка (IL), который он производит». (https://msdn.microsoft.com/en-us/library/ms173119.aspx)

Инициализировать константы во время декларирования, так как их не менять.

public const int cMonths = 12; 

 Смежные вопросы

  • Нет связанных вопросов^_^