【发布时间】:2018-03-04 16:36:04
【问题描述】:
我知道这似乎微不足道,编译器可能会进行优化,但假设我有一段代码
for (i = 0; i < str.Length; ++i)
{
Console.WriteLine(str[str.Length - i]);
}
我想这样写
for (int i = 0, n = str.Length; i < n; ++i)
{
Console.WriteLine(str[n - i]);
}
但我不想从副本n = str.Length 中获得额外的内存。有什么方法可以让我简单地说n 指向str.Length 而不会创建任何额外的内存?
【问题讨论】:
-
它需要存储在内存中的某个位置。在这种情况下,长度是一个整数,因此即使您使用指针,指针也会占用相同的空间。顺便说一句,在这两个版本中,您都会得到 index out of range 异常。
-
我认为他的意思类似于预处理器定义。
-
如果您负担不起
int的分配,您就没有在.net 中写作的能力。 -
您的目标硬件是什么,其中一个临时 int 变量会产生任何影响?烤面包机?
-
@jdweng 这有什么关系?