Имея все знания, которыми владею в этот самый момент, я не могу решить, для чего я буду использовать для своего случая использования.Структура или классы для данного конкретного случая
Это теперь пример со структурой.
Первый класс выглядит следующим образом:
class Owner
{
public A[] Kids;
public Owner(int count)
{
Kids = new A [count];
// If I would use classes I would need to create new class for each item, right?
// It would look like below and my worries are memory impacts because of new A()
// for(int i = 0; i < count; Kids[i++] = new A());
}
}
Второй класс выглядит следующим образом:
class Node
{
private Owner o;
private int num;
private A[] kids;
public Node(Owner o, int num)
{
this.o = o;
this.num = num;
}
public A[] Kids
{
get
{
this.kids = o.Kids[num].NextList;
return this.kids;
}
}
}
типа А выглядит эта
<struct or class> A
{
public int Value;
public A[] NextList;
}
Вопрос теперь, когда используя structs, доступ будет работать быстрее, чем при использовании классов?
Могу ли я получить издержки памяти при использовании классов, так как мне нужно будет инициализировать каждый класс.
Должен ли я позаботиться о том, чтобы убивать ссылки при использовании классов?
Что вы будете использовать для этого в этом случае?
Прошу прощения, если это дубликат, или если я сделал что-то неправильно. Пожалуйста, скажите мне, что я сделал не так, прежде чем понизить этот вопрос. Я еще новичок в этом форуме.
ли 'A' когда-либо мутировали, или он используется в качестве неизменного моды? Что касается вашего вопроса о ссылках, все, что вам нужно сделать, это «отпустить» их, чтобы они имели право на сбор мусора. Я склонен найти классы более чем адекватными даже в ситуациях, когда структуры могут быть немного лучше. В настоящее время у меня все меньше и меньше причин, чтобы беспокоиться о «структурированном» материале. –
Я думаю, что вы переоцениваете влияние использования классов. Я бы предложил вам выбрать тот, который имеет наибольший смысл и касается только проблем с производительностью по мере их возникновения. Как однажды сказал Дональд Кнут: «Преждевременная оптимизация - это корень всего зла». Если вы действительно обеспокоены оптимизацией этого, я бы это прокомментировал. Проверьте оба сценария и измерьте время. – Moeri
Существует множество дебатов о преимуществах использования классов или структур, я несколько дней назад был отклонен за предложение использовать структуру, чтобы я мог понять вашу нервозность. Я думаю, что ответ будет чем-то вроде «зависит» и от многих факторов. Обычно я использую классы, но я подозреваю, что фактическая разница незначительна. – bhs