C#是否有办法创建局部变量的别名?

时间:2018-03-04 16:36:05

标签: c# .net

我知道这似乎微不足道,编译器可能会进行优化,但是假设我有一段代码,如

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而没有创建任何额外的内存?

1 个答案:

答案 0 :(得分:0)

您可以执行以下操作,它允许您将多个指针指向单个原始值类型的引用。这相应地防止了对象被克隆(它的值被复制和分配)。

unsafe{
   int targetValue = 200;
   int* ptr1 = &targetValue;
   int* ptr2 = &targetValue;
   targetValue = 400;
   Console.WriteLine("{0} {1}", *ptr1, *ptr2);
}

输出为400 400