class student//声明一种结构体
{
public int student_id;
public string student_name;
}
public LinkedList<student> student_list=new LinkedList<student>();//新建空链表
/******其他代码*****/
private void function1()//给链表添加元素
{
student s1=new student();//C#不能用指针,所以我也很无奈的这样做。
s1.name=textbox1.text;
student_list.AddLast(s1);
/******其他代码*****/
}
结果可想而知:当function1运行结束后,局部变量s1被撤除,链表还是为空。
之前写C++只需要让s1声明成为一个指针就行了,现在C#里不能用指针,请教各位我该怎么写?
7 个解决方案
#1
楼主你运行过没??
#2
结果可想而知:当function1运行结束后,局部变量s1被撤除,链表还是为空。
不会啊。这不是C++,s1不会被“撤除”,放心好了。
不会啊。这不是C++,s1不会被“撤除”,放心好了。
#3
.NET是自动垃圾回收的。
只要当前作用域内能访问到这个变量的引用,对象就绝对不会被删除。
在这里,当s1被添加到student_list后,除非这个类被销毁了,否则s1引用的对象一直存在。
只要当前作用域内能访问到这个变量的引用,对象就绝对不会被删除。
在这里,当s1被添加到student_list后,除非这个类被销毁了,否则s1引用的对象一直存在。
#4
建议你先调试看看真实的情况,不要想当然。
#5
实验:
1.输入:张三,然后按钮 链表中1个元素,张三
2.输入:李四,然后按钮 链表中1个元素,李四(可见这种操作是取代而不是添加)
3.输入:王二,然后按钮 链表中仍然只有1个元素,王二
刚才是我表述有误,这样各位懂了吧?
1.输入:张三,然后按钮 链表中1个元素,张三
2.输入:李四,然后按钮 链表中1个元素,李四(可见这种操作是取代而不是添加)
3.输入:王二,然后按钮 链表中仍然只有1个元素,王二
刚才是我表述有误,这样各位懂了吧?
#6
如果在 AddLast 中把 s1 存储下来,应该不会被销毁。
#7
除非你整个类都重建了。
要看你完整的代码。
#1
楼主你运行过没??
#2
结果可想而知:当function1运行结束后,局部变量s1被撤除,链表还是为空。
不会啊。这不是C++,s1不会被“撤除”,放心好了。
不会啊。这不是C++,s1不会被“撤除”,放心好了。
#3
.NET是自动垃圾回收的。
只要当前作用域内能访问到这个变量的引用,对象就绝对不会被删除。
在这里,当s1被添加到student_list后,除非这个类被销毁了,否则s1引用的对象一直存在。
只要当前作用域内能访问到这个变量的引用,对象就绝对不会被删除。
在这里,当s1被添加到student_list后,除非这个类被销毁了,否则s1引用的对象一直存在。
#4
建议你先调试看看真实的情况,不要想当然。
#5
实验:
1.输入:张三,然后按钮 链表中1个元素,张三
2.输入:李四,然后按钮 链表中1个元素,李四(可见这种操作是取代而不是添加)
3.输入:王二,然后按钮 链表中仍然只有1个元素,王二
刚才是我表述有误,这样各位懂了吧?
1.输入:张三,然后按钮 链表中1个元素,张三
2.输入:李四,然后按钮 链表中1个元素,李四(可见这种操作是取代而不是添加)
3.输入:王二,然后按钮 链表中仍然只有1个元素,王二
刚才是我表述有误,这样各位懂了吧?
#6
如果在 AddLast 中把 s1 存储下来,应该不会被销毁。
#7
除非你整个类都重建了。
要看你完整的代码。