gpt4 book ai didi

C# 销毁对象及其所有引用

转载 作者:行者123 更新时间:2023-12-03 21:15:07 24 4
gpt4 key购买 nike

下面的 C# 代码

ResBlock resBlock1 = new ResBlock();                
resBlock1.CustomerID = "ABC";

Block block = new Block();
block.Tag = resBlock1;

resBlock1 = null;

Console.WriteLine(((ResBlock)block.Tag).CustomerID);

输出将是“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; }
}

最佳答案

不。你不能以那种方式“摧毁”一个物体。这不是对象生命周期在 .NET 中的工作方式。您可能会更改 Tag属性为 WeakReference .这将阻止 Tag属性使对象保持在 WeakReference 内活着……但您仍然无法主动请求销毁对象。

关于C# 销毁对象及其所有引用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61384424/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com