Сокращение ненужных одинаковых значений в переменных класса - PullRequest
0 голосов
/ 05 июня 2010
class A
{
 public int a;
 public int c;
}

Я создам 10 экземпляров из A. Затем я снова создам 15 экземпляров из A ... продолжайте. Первые 10 экземпляров будут иметь одинаковое значение для переменной, а следующие 15 экземпляров будут иметь снова одинаковое значение для. Но я не имею в виду, что обе группы имеют одинаковые значения для. раз во второй группе по памяти ненужно.

Каким было бы Лучшее решение или решения для уменьшения ненужных данных в этой ситуации?

Ответы [ 4 ]

0 голосов
/ 05 июня 2010

Другое решение -

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

а вместо создания нового экземпляра int? класс мы должны назначить один и тот же экземпляр. Но приведение int? к int будет некрасиво пользоваться и вызывать проблемы с производительностью.

0 голосов
/ 05 июня 2010

Понятно, что статический член не будет работать для этой проблемы. Потому что группы экземпляров будут иметь разные значения.

это может быть одним из решений. Что может быть другим?

class Common
{
  public int a;
}
class A
{
  public Common a;
  public int c;
}
0 голосов
/ 05 июня 2010

Поможет ли HashSet<T>?

0 голосов
/ 05 июня 2010

Если a и c на самом деле являются целыми числами, то не стоит тратить время на их оптимизацию из пространства памяти; в большинстве случаев все, что вы использовали бы для этого, занимало бы больше места, чем сами целые числа.

Однако, если a и c на самом деле являются объектами, которые занимают значительный объем памяти, вы можете вместо этого указывать объекты (или держатели, в зависимости от языка) как элементы A вместо объектов самих себя. Таким образом, единственная память дублируется в указателе.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...