gpt4 book ai didi

c# - .NET Framework 中是否有任何类来表示对象的保存容器?

转载 作者:行者123 更新时间:2023-11-30 14:42:50 25 4
gpt4 key购买 nike

我正在寻找一个为对象定义持有结构的类。此对象的值可以在创建此容器之后的时间设置。在 lambda 或回调函数等中传递这样的结构很有用。

说:

class HoldObject<T> {
public T Value { get; set; }
public bool IsValueSet();
public void WaitUntilHasValue();
}

// and then we could use it like so ...

HoldObject<byte[]> downloadedBytes = new HoldObject<byte[]>();
DownloadBytes("http://www.stackoverflow.com", sender => downloadedBytes.Value = sender.GetBytes());

定义这个结构相当容易,但我想看看 FCL 中是否有可用的结构。我还希望这是一个高效的结构,具有所有需要的功能,如线程安全、高效等待等。

非常感谢任何帮助。

最佳答案

从未见过这样的类,但应该很简单。

public class ObjectHolder<T>
{
private T value;
private ManualResetEvent waitEvent = new ManualResetEvent(false);

public T Value
{
get { return value; }
set
{
this.value = value;

ManualResetEvent evt = waitEvent;

if(evt != null)
{
evt.Set();
evt.Dispose();
evt = null;
}
}
}

public bool IsValueSet
{
get { return waitEvent == null; }
}

public void WaitUntilHasValue()
{
ManualResetEvent evt = waitEvent;

if(evt != null) evt.WaitOne();
}
}

关于c# - .NET Framework 中是否有任何类来表示对象的保存容器?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2796674/

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