在下面的例子中,我在构造函数中实习字符串,这很好。然而,当我从二进制格式化器反序列化对象时,我不认为该字符串将被调用,因为构造函数应该被调用。我应该如何确保_name字符串被拦截? ...或者它会被拦截好吗?我应该如何处理字符串在反序列化中的实习?
编辑:所以它似乎工作(正确实习字符串)没有处理OnDeserializedAttribute。它是如何做到的?
我正在使用内存分析器,有或没有下面的方法仍然实习字符串?魔法? : -/
[OnDeserializedAttribute]
private void OnDeserialized(StreamingContext context)
{
_name = string.Intern(_name);
}
感谢
[Serializable]
class City
{
private readonly string _name;
public City(string t)
{
_name = string.Intern(t);
}
public string Name
{
get { return _name; }
}
public override string ToString()
{
return _name;
}
}
你为什么明确实习生字符串?这是.net的内部机制。 – Andrey 2010-06-03 12:00:29