【发布时间】:2011-07-07 22:20:26
【问题描述】:
考虑这个 C# 类:
class Node
{
public Node Next;
}
并考虑这两种情况:
Node A = new Node();
Node B = A;
B=(B.Next = new Node());
和
Node A = new Node();
Node B = A;
B.Next = (B=new Node());
为什么它们会产生相同的结果!?
(A)->(B)->Null
我认为由于运算符优先级,第二种情况会产生一个指向自身的节点...
Java 和 Python 也是这样吗? 谢谢
【问题讨论】:
-
(A = new Node()) 应该返回一个新节点。似乎对 A 的分配从未发生过,所以在第一行创建的第一个节点并没有“丢失”。
-
@atas:请看一下新的编辑..
标签: c# java python operator-keyword operator-precedence