我知道这似乎微不足道,编译器可能会进行优化,但是假设我有一段代码,如
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
而没有创建任何额外的内存?
答案 0 :(得分:0)
您可以执行以下操作,它允许您将多个指针指向单个原始值类型的引用。这相应地防止了对象被克隆(它的值被复制和分配)。
unsafe{
int targetValue = 200;
int* ptr1 = &targetValue;
int* ptr2 = &targetValue;
targetValue = 400;
Console.WriteLine("{0} {1}", *ptr1, *ptr2);
}
输出为400 400
。