Я изначально создал класс, который не был неизменным, но теперь я хочу иметь возможность создать неизменяемую эквивалентную структуру данных. Притворись, например, изменяемый класс:Преобразование объекта, который должен быть неизменным
namespace Utility
{
public class bar
{
public string name { get; set; }
public double weight { get; set; }
public int age { get; set;}
public List<...> friendInstances; //instantiated at run time
}
}
//and now I make a mutable class.
public class MemorySafe_bar
{
private readonly string _name;
private readonly double _weight;
private readonly int _age;
private readonly List<...> _friendInstances;
public MemorySafe_bar(string name, double weight, int age,
List<...> friend Inst)
{
_name = name;
_weight = weight;
_age = age;
_friendInstances = Inst
}
//..getters would go here...
function()
{
Utility.bar bar_ex = new bar();
bar_ex.name = "Kathy";
bar_ex.weight = 42.34;
bar_ex.age = 10;
bar_ex.List<...> friends = new List<...>();
friends.Add(stuff);
Utility.MemorySafe_bar = new MemorySafe_bar(
bar_ex.name, bar_ex.weight, bar_ex.age, friends);
}
}
Я не верю, что изменяемый объект никогда не будет изменено в будущем с этого момента.
Что именно вы хотели бы объяснить? Также почему бы не просто установить статический класс со статическим конструктором? – Nomad101
Пробовал форматировать свой код, но есть странная функция '()' с неясной областью - пожалуйста, обновите код ... Также добавьте вопрос в сообщение. –
В чем вопрос? Кроме того, если объект должен быть действительно неизменным, все его члены также должны быть неизменными, а это значит, что вы не можете использовать «Список». – svick