mma*_*uso 1 .net c# linked-list list
我正在使用的对象有两个值,一个对象编号和一个名称字符串; 该对象具有一个构造函数,只要创建一个新对象,该构造函数就会自动递增该值,因此每个对象都有一个唯一的编号.
public class MyObject
{
private static int _objectnumber;
private string _name;
public MyObject()
{
++_objectNumber;
}
}
Run Code Online (Sandbox Code Playgroud)
我创建一个新对象并将其分配给变量.
curObject = new MyObject();
Run Code Online (Sandbox Code Playgroud)
从用户获取名称后,我将其插入链接列表.
if(myLinkedList == null)
{
myLinkedList = new LinkedList<MyObject>();
myLinkedList.AddFirst(curObject);
}
else
{
// code here to check to make sure the objectnumber is unique
myLinkedList.AddLast(curObject);
}
curObject = null; //I'm done with this
Run Code Online (Sandbox Code Playgroud)
当我创建第二个新对象时会发生问题.当我打电话给...
curObject = new MyObject();
Run Code Online (Sandbox Code Playgroud)
...第二次.构造函数按原样递增对象编号,但它也会增加链接列表的第一个节点中的对象编号.
好像curObject仍然指向列表中的第一个节点(这就是为什么我将它放在列表中后将其设置为null.
最初,链表中的名称字段也会更改,但通过将curObject设置为null可以解决此问题.
显然,当我将curObject插入到链表中时,链表节点只指向存储curObject的内存.但是,当我创建一个新的curObject时,它似乎只是将新对象设置为相同的内存空间 - 因此,它也指向链接列表的第一个节点.
Mit*_*eat 10
正如@Damien评论的那样,您的问题与链表无关.
您已将_objectnumber该类定义为静态,即该类的所有实例只有一个副本.
相反,创建一个私有成员并从静态变量中分配:
public class MyObject
{
private static int Objectnumber = 0;
private int _objectnumber;
private string _name;
public MyObject()
{
_objectNumber = ++Objectnumber;
}
}
Run Code Online (Sandbox Code Playgroud)