相关疑难解决方法(0)

在.NET中使用后将对象设置为Null/Nothing

完成后,是否应该将所有对象设置为null(Nothing在VB.NET中)?

我理解在.NET中必须处理实现IDisposable接口的任何对象实例以释放一些资源,尽管对象在处理之后仍然可以是某种东西(因此isDisposed表单中的属性),所以我认为它仍然可以驻留在记忆中还是至少部分?

我也知道当一个对象超出范围时,它会被标记为收集准备好下一次垃圾收集器的传递(虽然这可能需要时间).

因此,考虑到这一点,将其设置为null加速系统释放内存,因为它不必解决它不再在范围内并且它们是否有任何不良副作用?

MSDN文章从未在示例中执行此操作,目前我这样做是因为我无法看到它的危害.但是我遇到了各种意见,所以任何评论都是有用的.

.net c# vb.net null memory-management

184
推荐指数
8
解决办法
9万
查看次数

处理列表的最佳方式

我有List对象.我该如何处理清单?

例如,

List<User> usersCollection =new List<User>();

User user1 = new User();
User user2 = new User()

userCollection.Add(user1);
userCollection.Add(user2);
Run Code Online (Sandbox Code Playgroud)

如果我确定userCollection = null;会发生什么?

foreach(User user in userCollection)
{
    user = null;
}
Run Code Online (Sandbox Code Playgroud)

哪一个最好?

c# asp.net garbage-collection dispose list

31
推荐指数
4
解决办法
7万
查看次数

在自身内将对象设置为null

只是想知道这是否是从内部终止对象的可接受方式?以来

this = null;
Run Code Online (Sandbox Code Playgroud)

不可能.我通常只设置一个名为dispos或something的bo​​ol,如果在终止后访问该对象则抛出异常.但后来这发生在我身上,我认为它可能是一个更清洁的解决方案,但它似乎有点hacky所以我想要第二个意见.我应该坚持设置一个布尔或与此一起去.这也可以让垃圾收集器清理我的对象.

public class A
{
    public A()
    {

    }

    public void Method()
    {
        try
        {
            //Do Something.
        }
        catch
        {
            //If it fails destroy the object
            Destroy(this);
        }
    }

    private static void Destroy(A a)
    {
        a = null;
    }
}
Run Code Online (Sandbox Code Playgroud)

c#

1
推荐指数
1
解决办法
1391
查看次数

using语句 - 是否会触发垃圾回收?

我想做的是将一些可能泄漏的可疑函数包装在using语句中以触发垃圾回收,是否有人使用过或看过这样的东西?这有用吗?你对此有什么看法?

using (String wrapper = new String("maybe this will trigger gc")){
  //do stuff here
  //or maybe:
  // function1();
  // function2();
  //
  //and then see if its leaking?

  // eg:
       _mygeometry = new Geometry();
       _mygeometry = null; // will GC free this ?
}
Run Code Online (Sandbox Code Playgroud)

你认为这会奏效吗?你之前用过这个吗?有什么我可以做的不是一个字符串?我使用WPF,我尝试使用(var garbage = 1){}并且不起作用,我想String可能会.

c# memory

0
推荐指数
1
解决办法
2449
查看次数