以下是 C# 代码:
ResBlock resBlock1 = new ResBlock();
resBlock1.CustomerID = "ABC";
Block block = new Block();
block.Tag = resBlock1;
resBlock1 = null;
Console.WriteLine(((ResBlock)block.Tag).CustomerID);
输出结果将是"ABC"。当然,这只是我所面对的问题的一个例子,但我的代码更加复杂。
我想了解的是,当引用对象(resBlock1
)设置为null
或以其他方式被销毁时(哪一种?),是否有办法使block.Tag = null
。
这些类非常简单,因为这只是一个例子:
public class ResBlock: IDisposable
{
public DateTime From { get; set; }
public DateTime To { get; set; }
public string CustomerID { get; set; }
public string ItemID { get; set; }
[...]
public ResBlock() {
DaysStatus = new List<ResBlockDayStatus>();
Deleted = false;
}
public bool LogicallyDeleted { get; set; }
public void Dispose() { }
}
public class Block
{
public bool Selected { get; set; }
public object Tag { get; set; }
public DateTime From { get; set; }
public DateTime To { get; set; }
}
block.Tag
与“原始”resBlock1
一样有价值和独特。 - GSergObjectDisposedException
。可能需要创建一个公共只读的“IsDisposed”属性来查询;能够检查总比必须处理异常要好。 - Nyerguds