Интересуясь предполагаемым приростом производительностив xobotos, я проверил двоичное дерево эталонный код.
Java-версия узла бинарного дерева:
private static class TreeNode
{
private TreeNode left, right;
private int item;
}
Версия C#:
struct TreeNode
{
class Next
{
public TreeNode left, right;
}
private Next next;
private int item;
}
Мне интересно, в чем преимущество использования структуры здесь, поскольку указатели Next и Previous по-прежнему инкапсулированы в класс.
Ну, есть одно — конечные узлы являются чистыми типами значений, поскольку им не нужны левый и правый указатели. В типичном бинарном дереве, где половина узлов — листья, это означает сокращение количества объектов на 50 %. Тем не менее, перечисленные приросты производительности кажутся гораздо большими.
Вопрос: Есть ли что-то еще?
Кроме того, поскольку мне не пришло в голову определять таким образом узлы дерева в C# (спасибо Xamarin!), какие еще структуры данных могут выиграть от неочевидного использования структур? (Хотя это немного не по теме и с открытым концом.)