在C#中,你如何完成与#define相同的事情

时间:2009-01-28 23:49:24

标签: c# constants

来自C背景我习惯用以下列方式定义缓冲区的大小:

#define BUFFER_SIZE 1024

uint8_t buffer[BUFFER_SIZE];

你如何在C#中完成同样的事情?

全帽K& R风格是否也适合普通的C#Pascal / Camel表壳?

5 个答案:

答案 0 :(得分:5)

const int BUFFER_SIZE = 1024;

不要使用“static readonly”,因为它会创建一个变量。 “const”在构建时被替换,不会创建变量。

答案 1 :(得分:5)

就个人而言,我更喜欢常数:

private const int BUFFER_SIZE = 1024;

但是,如果它是公开的并且您是一个框架,那么您可能希望它是avoid client recompiles的只读。

答案 2 :(得分:3)

public static readonly int BUFFER_SIZE = 1024;

由于compiler shenanigans that can happen具有const值,因此我更喜欢这个const(const仅用于替换,因此更改该值不会在根据原始编译的任何程序集中更改它。)

答案 3 :(得分:1)

请勿使用#define。

定义一个constante:private const int BUFFER_SIZE 或者只读变量:private readonly int BUFFER_SIZE

答案 4 :(得分:0)

在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];