【发布时间】:2018-03-06 13:32:11
【问题描述】:
我是 C/C++ 到 C# 开发人员。
我需要做类似下面的事情,
#define LEN 20
int data[LEN];
由于 C# 不支持#define,许多论坛建议声明一个const 变量。 const 变量可能在下面对我有帮助,但对上面没有帮助。
for (int a = 0; a < LEN; a++)
{
x += data[LEN - a - 1];
}
那么,如何将常量也用于数组声明?
【问题讨论】:
-
即使在 C++ 中,也不应该使用预处理器宏来定义常量...
-
您所说的“不在上面”是什么意思?
int x = data[LEN];没有声明数组类型的变量,也没有创建数组——这与常量无关,只是语法不正确。你可以使用int[] data = new int[LEN];... -
1) "我如何也使用常量来声明数组?" 问题是.. 数组大小没有有在 C# 中保持不变,原因与在 C++ 中不需要将常量值传递给
new[LEN]的原因相同。没有像 C++ 那样具有自动存储持续时间的数组。 2)#define不会创建常量。它只是一个文本替换,它使用 find-and-replace 将每个出现的LEN替换为20。 -
@UlrichEckhardt 你能告诉我为什么我们不应该这样做吗?
-
@JonSkeet "above" 表示声明一个数组。声明
int x = data[LEN];现已更正。