Code
这段代码中,bank的内存分配是怎么样的?
同时声明两个bank为什么又是错的?
然后,在for语句后,我又怎么样才能区别这5个bank,还是它已经被垃圾回收了?
每一次调用new关键字,比如下面的代码
Bank bank = new Bank(2001010, "kulong", "2006.05.1", "43011119870914", 5000);
此时在系统的堆(Heap)上,分配了一段空间,用于存放一个Bank对象的内容
随后在系统的栈(Stack)上,分配了一个指针,指向堆上分配的Bank对象
不能同时声明2个Bank是因为C#的语法不允许在一个域中有同名的变量,因此第2次声明应该去掉类型说明,代码可以如下
Bank bank = new Bank(xxx);
bank = new Bank(xxx); //这里不需要类型说明
在for循环后,所有的Bank都出了作用域,因此无法取值,也就没有区别的概念了
bank的内存分配:会为每个Bank对象分配内存空间
同时声明两个bank,肯定是错了,这个是C#代码规范所不允许的
区别这5个bank:可以在Bank类中加个字段ID,在你new的时候,把当前i的值,给Bank里的ID
就好了,判断时找这个ID是几,这个Bank就是第几个了
for循环结束后,bank就没有了。
for (int i = 0; i <= 5; i++)
{
Bank bank = new Bank(2001010, "kulong", "2006.05.1", "43011119870914", 5000);
}
每循环一次 上一次new的对象就被重新new 一次,而上一次的对象就被gc了