當一個物件不再具有任何參考,物件就會被垃圾收集機制處理掉。
建立具有Elephant類別的程式,產生兩個Elephant實例,接著讓它們交換參考,不要讓任何Elephant實例被垃圾收集機制處理掉。
主程式
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
namespace Swap
{
public partial class Form1 : Form
{
Elephant lucinda;
Elephant lloyd;
Elephant change;
public Form1()
{
InitializeComponent();
lucinda = new Elephant(); ←初始化
lucinda.Name = "Lucinda";
lucinda.EarSize = 33;
lloyd = new Elephant(); ←初始化
lloyd.Name = "Lloyd";
lloyd.EarSize = 40;
}
private void button1_Click(object sender, EventArgs e)
{
lloyd.WhoAmI();
}
private void button2_Click(object sender, EventArgs e)
{
lucinda.WhoAmI();
}
private void button3_Click(object sender, EventArgs e)
{
change = lloyd;←兩個物件裡的參考要交換需要有第三個參考來幫忙,以避免其中一個物件因為裡面不再有參考而被當作垃圾收集處理掉。
lloyd = lucinda;
lucinda = change;
MessageBox.Show("Objects swapped");
}
}
}
Elephant類別程式
using System;
using System.Collections.Generic;
using System.Text;
using System.Windows.Forms;
namespace Swap
{
class Elephant
{
public int EarSize;
public string Name;
public void WhoAmI()
{
MessageBox.Show("My EarSize are " + EarSize + " inches tall.", Name + " say...");
}
}
}
Demo圖
主應用框架
按下第一個按鈕
按下第二個按鈕
按下第三個按鈕
再按下第一個按鈕
沒有留言:
張貼留言