我有一些这样的代码:
private void button1_Click(object sender, EventArgs e)
{
Someclass object= new Someclass();
foreach (conditioin)
{
some methods();
}
object= null;
}
我需要释放对象的记忆因为每次按下按钮它都会显示相同的结果。但是内部的方法应该忘记并重新初始化新的结果。
请帮帮我吗?
$$ UPDATE $$
好的,我将提供具体的代码
我使用NativeWiFi
private void button1_Click(object sender, EventArgs e)
{
listView1.Items.Clear();
WlanClient client = new WlanClient();
foreach (WlanClient.WlanInterface wlanIface in client.Interfaces)
{
Wlan.WlanBssEntry[] wlanBssEntries = wlanIface.GetNetworkBssList();
foreach (Wlan.WlanBssEntry network in wlanBssEntries)
{
byte[] macAddr = network.dot11Bssid;
string tMac = "";
for (int i = 0; i < macAddr.Length; i++)
{
tMac += macAddr[i].ToString("x2").PadLeft(2, '0').ToUpper();
}
listView1.Items.Add(String.Format("{0} Signal: {1}% ", (GetStringForSSID(network.dot11Ssid)), network.linkQuality));
/*
Console.WriteLine("Signal: {0}%.", network.linkQuality);
Console.WriteLine("BSS Type: {0}.", network.dot11BssType);
Console.WriteLine("MAC: {0}.", tMac);
Console.WriteLine("");*/
}
}
client = null;
}
static string GetStringForSSID(Wlan.Dot11Ssid ssid)
{
return System.Text.Encoding.ASCII.GetString(ssid.SSID, 0, (int)ssid.SSIDLength);
}
答案 0 :(得分:2)
将局部变量设置为null
会释放任何内存,这是一种常见的误解。由于变量在离开方法时超出了范围,object = null;
行没有任何意义。
同样在.NET中,您无法强制释放内存。垃圾收集在它认为是时候就完成它的工作。
答案 1 :(得分:0)
一般来说,每次执行构造函数Someclass()
时,都会创建一个新对象。在普通的C#中,内存中的位置无关紧要。将隐式地初始化所有成员。为null或由您自己的代码。如果在每次循环迭代中获得相同的结果,那是因为初始化与之前的运行相同。