Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/262.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 释放对象的内存_C# - Fatal编程技术网

C# 释放对象的内存

C# 释放对象的内存,c#,C#,我有一些这样的代码: private void button1_Click(object sender, EventArgs e) { Someclass object= new Someclass(); foreach (conditioin) { some methods(); } object= null; } 我需要释放对象的内存,因为每次按下按钮都会显示相同的结果。但内部的方法应该被忘记,并重新初始化新的结果 你能帮帮我吗 $

我有一些这样的代码:

private void button1_Click(object sender, EventArgs e)
{
    Someclass object= new Someclass();
    foreach (conditioin)
    {
        some methods();
    }

    object= null;
}
我需要释放对象的内存,因为每次按下按钮都会显示相同的结果。但内部的方法应该被忘记,并重新初始化新的结果

你能帮帮我吗

$$更新$$

好的,我将提供具体的代码

我使用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);
    }
private void按钮1\u单击(对象发送者,事件参数e)
{
listView1.Items.Clear();
WlanClient client=新的WlanClient();
foreach(客户端接口中的WlanClient.WlanInterface-wlanface)
{
Wlan.WlanBssEntry[]wlanBssEntries=wlanIface.GetNetworkBssList();
foreach(Wlan.WlanBssEntry中的Wlan.WlanBssEntry网络)
{
字节[]macAddr=network.dot11Bssid;
字符串tMac=“”;
for(int i=0;i
将局部变量设置为
null
会释放内存,这是一个常见的误解。由于变量在离开方法时超出范围,
object=null行没有任何意义


在.NET中,也不能强制释放内存。每当垃圾收集认为是时候时,它就会执行它的工作。

一般来说,每次执行构造函数
Someclass()
时,都会创建一个新对象。在普通C#中,内存中的位置是不相关的。所有成员都将被初始化,或者隐式地(例如)初始化为null,或者由您自己的代码初始化。如果在每次循环迭代中获得相同的结果,这是因为初始化与以前的运行相同。

不需要释放内存。你需要的是一步一步地检查你的代码,找出哪里出了问题。内存由垃圾收集器释放。不必要的结果还有其他原因。您必须提供有关代码的更多详细信息。你的类有哪些成员,构造函数中发生了什么?最好的方法是将代码归结为一个简短的示例。这通常会在你真正提问之前回答你自己的问题。