Nic*_*nna 4 c# object-reference
下面的 C# 代码
ResBlock resBlock1 = new ResBlock();
resBlock1.CustomerID = "ABC";
Block block = new Block();
block.Tag = resBlock1;
resBlock1 = null;
Console.WriteLine(((ResBlock)block.Tag).CustomerID);
Run Code Online (Sandbox Code Playgroud)
输出将是“ABC”。当然,这是我面临的例子,但我的代码要复杂得多。
我想了解的是,是否有一种方法可以获取block.Tag = null引用对象 ( resBlock1) 以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; }
}
Run Code Online (Sandbox Code Playgroud)
不。你不能以那种方式“摧毁”一个物体。这不是对象生命周期在 .NET 中的工作方式。您可能会将该Tag属性更改为WeakReference. 这将阻止该Tag属性使对象保持WeakReference活动状态......但您仍然无法主动请求对象销毁。