我最初创建了一个不是不可变的类,但是现在我想要选择创建一个不可变的等价数据结构。假设,例如,可变类:将对象转换为不可变
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 2013-04-30 01:04:02
试图格式化您的代码,但有一个奇怪的'功能()'范围不明确 - 请更新代码...也添加问题的帖子。 – 2013-04-30 01:04:50
问题是什么?另外,如果一个对象被认为是不可变的,它的所有成员也必须是不可变的,这意味着你不能使用'List'。 – svick 2013-04-30 01:10:46