在下面的例子中,我在構造函數中實習字符串,這很好。然而,當我從二進制格式化器反序列化對象時,我不認爲該字符串將被調用,因爲構造函數應該被調用。我應該如何確保_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