Я пытаюсь скопировать значения из одного словаря в другой, поэтому, когда это значение изменяется в новом словаре, оно не меняет старое значение. Прямо сейчас я считаю, что вместо этого копирую адрес.
public Cube Right(Cube cube) {
Dictionary<SidePosition, Side> newSides = new Dictionary<SidePosition, Side>(cube.Sides);
for (int i = 0; i < RightSideOrder.Count; i++) {
for (int j = 0; j < RightFaceOrder.Count; j++) {
newSides[RightSideOrder[i]].Faces[RightFaceOrder[j]] =
cube.Sides[RightSideOrder[GetAntecedantSideIndex(i)]]
.Faces[RightFaceOrder[j]];
}
}
return cube;
}
private int GetAntecedantSideIndex(int currentIndex) {
if (currentIndex == 0)
return 3;
return currentIndex - 1;
}
}
И Cube
, и значения, содержащиеся в его словаре Side
, являются структурами. Я очень новичок в C #, поэтому извиняюсь, если соглашение об именах отключено.
Из моих исследований / разговоров с людьми решение может включать в себя ICloneable или новую реализацию IDictionary, но пока ни с одним, ни с этим не было никакой удачи.
Полный проект можно найти здесь, если требуется более подробная информация: https://github.com/Gregam3/RubicksCubeSolver
Отрывок кода из класса CubeManipulator
TLDR; как получить значение из словаря как тип значения