内存如何在带有变量赋值的c#中工作?

麦克斯·肯尼(Max Kenney):

我正在解决一些编程问题,以准备面试,但我对有效的解决方案感到困惑。

问题本身并不重要,重要的是在此解决方案中,一个变量设置为另一个变量,例如:

ListNode current = head;

然后,随着解决方案的继续,将修改此“当前”变量。在任何时候都不会将电流重新分配给head,但是在对电流进行了所有更改后,它仍然会在最后返回head。

while (current != null && current.next != null) {
        if (current.next.val == current.val) {
            current.next = current.next.next;
        } else {
            current = current.next;
        }
}
return head;

这是否意味着当电流设置为head时,实际上是将其设置为指向内存地址的指针,而不是复制相同的属性吗?

我不了解这里发生的事情,但我感到非常尴尬,但除非我确信自己知道发生了什么,否则我继续前进就感到不自在。

谢谢

现在居住:

它不是指针,它在C#中的引用。

是的,它们将指向相同的内存地址。我在下面给你一个简单的例子。

using System;
            
public class Program
{
    public class ABC {
    public int x;
    }
    public static void Main()
    {
        ABC a = new ABC();
        a.x = 1;
        ABC b = a;
        b.x = 2;
        ABC c = b;
        c.x = 3;
        Console.WriteLine(a.x);
        Console.WriteLine(b.x);
        Console.WriteLine(b.x);
    }
}

它将打印。

3

3

3

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章