.net c#类内存分配

时间:2016-07-07 17:28:06

标签: c# .net memory

我的问题非常简单。 我需要创建一个类的20.000个等值,我想要了解它是否在内存方面最好将一个方法放在instanciated类中,或者如果在调用中只有一个方法更好class,然后传递给我需要计算的单个类属性。

我的意思是,就记忆而言,它是最好的:

情景a)

public class b
{
    public string name;
    public string result;
}

public class a
{    
    public string myMethod(string name)
    {
    //do complex things... long method...
    }

    //create 20.000 istances of class b
    //and when I need it... I take one of them and do something like...
    myclassB.result=myMethod(myclassB.name)    
}

或情景b)

public class b
{
    private string name;     
    private string result; 
    private string myMethod()
    {
        //do complex things... long method...
        result="something";
    }
}

public class a
{
    //create 20.000 istances of class b
    //and when I need it... I take one of them and do something like...
    myclassB.myMethod();
}

我的意思是,当我用它里面的方法创建类的20.000个时,会.net"复制"方法在内存中是20.000倍?或者它只会创建一个,然后由他自己处理?

2 个答案:

答案 0 :(得分:3)

就内存使用而言,这两种方案的工作原理相同。

答案 1 :(得分:0)

你不必担心这一点,即使它很重要,让我们采取其他方式,指向一个函数的指针值得大约2个字节的内存,并让我们假设您的方法只需要为每个对象分配这个内存。该应用程序现在占用20Kb的内存。如果这对你来说仍然很重要,那么考虑一下C#中的一个简单的hello world控制台应用程序在发布时附带调试器时会占用4Mb的内存。这是所有方法将占用指向函数的指针的内存的情况下的内存的200倍。这只是为了给你一个关于你必须担心的内存分配背后的洞的图像。

您应该做的最好的事情,特别是因为您在托管环境中编写代码,是考虑您的应用程序需要做什么,以及它的设计。