C#中List<object>.Clear()方法和实例化new List<object>()操作的结果分析
本文主要的目的是想简单的探讨一下C#中List针对内存的操作过程,以便以后遇到该种情况可以避免走进误区,内容非常简单,只是在此作为记录。能帮到人最好,帮不到就当给自己提个醒。C#将复杂的指针操作全都隐藏到后台去处理,以至于是我们很到看到C#的本质。
C#中list<T> list=new List<T>();中new的过程是建立一块内存空间,是新建一个没有元素的空列表对象。
C#中list.Clear()是把new之后的那块内存空间的内容清空,并不是删除这块内存空间,是清除原先列表对象的元素,还是那个对象,元素没了。
下面就说一下在哪种情况下会因为误用clear导致程序出现异常bug。
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text; namespace listAndnew
{
public class objectmouse
{
public string Name { get; set; }
public bool Sex { get; set; }
public int Age { get; set; }
}
class Program
{
static List<objectmouse> list = new List<objectmouse>();
static List<List<objectmouse>> list1 = new List<List<objectmouse>>();
static Random seed = new Random(); static void Main(string[] args)
{
int a = 0;
while (a < 2)
{
int flag = 0;
objectmouse mouse = new objectmouse();
list.Clear();///////////使用clear()方法输出图1
//list = new List<objectmouse>();/////////////使用new输出图2
while (flag < 2)
{
mouse.Name = "小白鼠";
mouse.Age = seed.Next(20);
mouse.Sex = true;
list.Add(mouse);
flag++;
} list1.Add(list);
a++;
}
for (int i = 0; i < list1.Count; i++)
{
for (int j = 0; j < list.Count; j++)
{
Console.WriteLine("Name" + list1[i][j].Name + "Sex:" + list1[i][j].Sex + "Age:" + list1[i][j].Age); }
Console.WriteLine("----------------华丽的分割线-------------------");
} Console.ReadKey(); }
}
}
图1 图2
C#中List<object>.Clear()方法和实例化new List<object>()操作的结果分析的更多相关文章
- java.nio.ByteBuffer中flip,rewind,clear方法的区别
对缓冲区的读写操作首先要知道缓冲区的下限.上限和当前位置.下面这些变量的值对Buffer类中的某些操作有着至关重要的作用: limit:所有对Buffer读写操作都会以limit变量的值作为上限. p ...
- TeeChart中 Line的Clear方法
需要注意的是,如果设置了Line.Smoothed=true; 那么调用Clear是无效的,虽然清除了曲线上的点. 但是界面上的曲线,并没有消失. 所以,在每一次Line.Clear();之前,必须确 ...
- PyQt(Python+Qt)学习随笔:树型部件QTreeWidget中的项编辑方法editTriggers、editItem和openPersistentEditor作用及对比分析
老猿Python博文目录 专栏:使用PyQt开发图形界面Python应用 老猿Python博客地址 在树型部件QTreeWidget中,有三种方法触发进行项数据的编辑:editTriggers触发编辑 ...
- Python中列表的各种方法
列表是Python中一种常用的存储信息的方式,所以要熟练掌握列表的各种方法: 首先我们定义一个列表(name),然后练习里面的各种方法: >>> name = ["Sora ...
- java中equals和hashCode方法随笔二
前几天看了篇关于java中equals和hashCode方法的解析 1.Object类中的equals方法和hashCode方法. Object类中的equals和hashCode方法简单明了,所有的 ...
- delphi 中TStringList Clear 方法的时候该对象有没有被释放
delphi 中TStringList 通过function AddObject(const S: string; AObject: TObject): Integer; 方法添加了一个对象,请问我在 ...
- Python中的__new__()方法与实例化
@Python中的__new__()方法与实例化 __new__()是在新式类中新出现的方法,它作用在构造方法建造实例之前,可以这么理解,在Python 中 存在于类里面的构造方法__init__ ...
- Hibernate中evict方法和clear方法说明
Hibernate中evict方法和clear方法说明 先创建一个对象,然后调用session.save方法,然后调用evict方法把该对象清除出缓存,最后提交事务.结果报错: Exception i ...
- spring中获取dao或对象中方法的实例化对象
spring中获取dao的中方法的实例化对象: //获取应用上下文对象 ApplicationContext ctx = new ClassPathXmlApplicationContext(&quo ...
随机推荐
- python函数回顾:hex()
描述 hex() 函数用于将10进制整数转换成16进制,以字符串形式表示. 语法 hex 语法: hex(x) 参数说明: x -- 10进制整数 返回值 返回16进制数,以字符串形式表示. 实例 & ...
- 查看hive的配置信息
在启动hive时设置配置属性信息 $ bin/hive --hiveconf <property=value> 查看当前所有的配置信息 hive > set ; hive (db_h ...
- Ubuntu 14.04上安装WineTMQQ2013麒麟版
版权声明:本文为博主原创文章.未经博主同意不得转载. https://blog.csdn.net/tao_627/article/details/24187699 我先后试用了longterm团队的2 ...
- 20170413 F110学习
F110 学习: Tcode: F110 自动付款业务, FBZP 维护收付程序设置 FBL1N 供应商行项目 XK03 显示供应商(银行信息维护) F110 ...
- zabbix-2.4.8-1添加MySQL主从状态监控
1.安装zabbix-agentyum -y install zabbix-2.4.8-1.el6.x86_64.rpm zabbix-agent-2.4.8-1.el6.x86_64.rpm 安装以 ...
- MAXIMUM SUBSEQUENCE SUM PROBLEM
排除不合理的项(负值), 设定一个标杆sum, 往后扫描看是否有比sum好的情况. We should ensure the following conditions: 1. The result m ...
- active admin
activeadmin 1.0.0.pre4 所依赖的库 gem 'jquery-rails', '~> 4.0.4' 4.2版本会出现找不到jquery-ui 的datepicker错误 使用 ...
- python 课堂笔记-for语句
for i in range(10): print("----------",i) for j in range(10): print("world",j) i ...
- String和StringBufffer的区别
string的字符串操作都是废弃已有的对象,开辟一个新的内存空间创建一个新的对象 比如一个string str= "字符串"; str += "a"; 这样的操 ...
- RTC是DS1339,驱动采用的是rtc-ds1307.c
我的外部RTC是DS1339,驱动采用的是rtc-ds1307.c在内核里选上了 <*> I2C support 以及 [*] Set system time from RTC on ...