В C # как сделать то же самое, что и #define - PullRequest
3 голосов
/ 29 января 2009

Исходя из фона C, я привык определять размер буфера следующим образом:

#define BUFFER_SIZE 1024

uint8_t buffer[BUFFER_SIZE];

Как бы вы сделали то же самое в C #?

Также подходит ли стиль K & R для всех заглавных букв с обычным C # Pascal / Camel?

Ответы [ 5 ]

5 голосов
/ 29 января 2009

Лично я предпочитаю постоянные:

private const int BUFFER_SIZE = 1024;

Хотя, если он общедоступный и вы фреймворк, вы можете захотеть, чтобы он был доступен только для во избежание перекомпиляции клиента .

5 голосов
/ 29 января 2009
const int BUFFER_SIZE = 1024;

Не используйте «статическое чтение только», поскольку оно создает переменную. «const» заменяются во время сборки и не создают переменных.

3 голосов
/ 29 января 2009
public static readonly int BUFFER_SIZE = 1024;

Я предпочитаю это над const из-за shenanigans , который может произойти со значением const (const просто используется для замены, поэтому изменение значения не изменит его в любой сборке, скомпилированной с оригиналом ).

1 голос
/ 29 января 2009

Не используйте # define.

Определение константы: private const int BUFFER_SIZE или переменная только для чтения: приватная только для чтения int BUFFER_SIZE

0 голосов
/ 15 апреля 2015

В C # я решил сделать это следующим образом:

//C# replace C++ #define
struct define
{
    public const int BUFFER_SIZE = 1024;
    //public const int STAN_LIMIT = 6;
    //public const String SIEMENS_FDATE = "1990-01-01";
}

//some code
byte[] buffer = new byte[define.BUFFER_SIZE];
...