内存消耗:是否更好的静态变量?

时间:2016-10-02 11:45:34

标签: c#

我正在构建一个具有Singleton模式的dll,所以基本上用户添加我的dll,导入引用并执行如下方法:

FooClass.Foo();

现在假设此方法每次都返回一个列表,并具有以下结构:

static class FooClass
{
   private static List<string> _fooList = new List<string>();
   public static List<string> Foo()
   {    
        _fooList.Clear();
        //list population
        return _fooList;
   }
}

如何在方法Foo中看到我每次清除列表而不是创建该列表的新实例时我会重用该对象。 我现在的问题是:

最好在方法Foo中创建一个新的列表,或者使用与我的示例中相同的列表对象?

返回的所有结果将由用户保存在另一个对象中,因此我不需要将列表保留在内存中。

任何提示将不胜感激!感谢。

1 个答案:

答案 0 :(得分:2)

  

最好在方法Foo中创建列表的新实例,还是使用与我的示例中相同的列表对象?

这两种方法不相同,因为clear修改了程序的其他部分可能正在使用的实例。这可能会导致严重的问题,尤其是在并发环境中。鉴于返回的结果将由用户保存在另一个对象中,如果您使用clear,则几乎可以保证您的问题。

  

我不需要将列表保留在内存中。

然后删除静态_fooList,并在每次调用方法时创建一个新对象。在每次通话中清除单身人士都会破坏首先拥有单身人士的目的。