If you do something like this, you will get a reference to a disposed object.
Pseudo code, in the interest of brevity.
public static void SomeMethod()
{
var iAmActuallyDisposed = OpenSocket();
}
public static Socket OpenSocket()
{
using(var socket = new Socket()){
socket.Open();
return socket;
}
}
because when the method returns, the ‘using’ loses scope.