gpt4 book ai didi

c# - C#:我需要在销毁对象之前关闭套接字吗?

转载 作者:行者123 更新时间:2023-12-03 11:58:16 25 4
gpt4 key购买 nike

我有一个套接字定义为memberobject的类。
如果我想销毁此类的对象(设置为null),是否需要.Close()套接字?

最佳答案

嗨,我认为您来自C++方面,位于dispose方法后面的C#Close方法调用中。关闭后,您无需执行任何操作。该对象将被处置,并且以后从GC中将其设置为null。

但是如果您的类(class)中有一个套接字作为成员,则必须应用Dispose模式!

Dispose pattern

只需将套接字放置在您创建的类的dispose方法中即可,请参见链接上方。

public class DisposableResourceHolder : IDisposable {

private Socket socket; // handle to a resource

public DisposableResourceHolder(){
this.socket= ... // allocates the resource
}

public void Dispose(){
Dispose(true);
GC.SuppressFinalize(this);
}

protected virtual void Dispose(bool disposing){
if (disposing){
if (socket!= null) socket.Dispose(); // HERE DISPOSE
}
}
}

如果这可以解决您的问题,请将其标记为答案!

谢谢

关于c# - C#:我需要在销毁对象之前关闭套接字吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18666481/

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