2010-06-05 64 views
0
class A 
{ 
public int a; 
public int c; 
} 

我将从A创建10个实例。然后我将再次从A创建15个实例...继续。前10个实例的变量值相同,接下来的15个实例的a值也会相同。但我并不是说这两个组的值都相同。问题是在第一组中创建相同的值10次,第二组内存时间不必要。在类成员变量中减少不必要的相同值

什么是最好的解决方案或解决方案在这种情况下减少不必要的数据?

+0

哪种语言? – crazyscot 2010-06-05 15:41:54

+0

我不知道它是一个语言相关的问题。如果它确实是相关的,所以C#或Java可以。 – Freshblood 2010-06-05 15:50:29

+0

是的,它也和语言有一点关系。在C语言中,我们也可以使用指针.net,我们可以使用指针,但编写不安全的代码不会吸引我。 – Freshblood 2010-06-05 16:07:51

回答

0

如果ac实际上只是整数,它将不值得你花时间试图优化它们的内存空间;在大多数情况下,任何你用来做的事情都会比整数本身占用更多的空间。

但是,如果ac实际上是占用的内存量显著的对象,你可以改为把对象指针(或持有人,根据语言)为A,而不是对象本身的成员。这种方式是指针中唯一重复的内存。

+0

对象指针是指参考类型变量吗?如果是的话,我在下面给出类似的答案。但是我不知道需要多少空间才能成为会员。 – Freshblood 2010-06-05 16:11:37

+0

对现有对象的引用通常只是指针,并占用少量内存。 – VeeArr 2010-06-05 17:18:36

0

很明显,静态成员将无法解决此问题。因为实例组将具有不同的值。

这可能是其中的一种解决方案。其他方面还有哪些?

class Common 
{ 
    public int a; 
} 
class A 
{ 
    public Common a; 
    public int c; 
} 
0

请问HashSet<T>有帮助吗?

+1

我不这么认为 – Freshblood 2010-06-05 16:09:26

0

另一种解决方案是

class A 
{ 
    public int? a; 
    public int c; 
} 

而是创造INT的新实例?类我们应该分配相同的实例。但是铸造int?到int将是丑陋的使用并导致性能问题。