Başlığın da belirttiği gibi:TcpClient nasıl kullanılır ve bir Public Dispose yöntemine sahip olmaz?
TcpClient nasıl kullanılabilir ve nasıl bir Public Dispose yöntemi kullanamaz?
Başlığın da belirttiği gibi:TcpClient nasıl kullanılır ve bir Public Dispose yöntemine sahip olmaz?
TcpClient nasıl kullanılabilir ve nasıl bir Public Dispose yöntemi kullanamaz?
explicit interface implementation kullanarak. Bunun yerine
public void Dispose()
{
...
}
arasında o
void IDisposable.Dispose()
{
...
}
Çeşitli diğer türleri bunu olurdu; bazen gereklilikten yoksundur (örneğin, IEnumerable.GetEnumerator
ve IEnumerable<T>.GetEnumerator
'u desteklemektedir) ve diğer zamanlarda, beton tipi bilindiğinde daha uygun bir API ortaya çıkarmak içindir.
Öyleyse, bu durumda uygun şekilde atmak için önerilen yol nedir? Dispose() yöntemini açık bir şekilde IDisposable'a veya TcpClient.Close() çağrısı yaparak çağırarak. – KFL
@KFL: Sadece 'using' ifadesini kullanabilirsiniz - bu normalde en iyi seçenek. 'Using' ifadesini kullanamıyorsanız,' Close' işlevini çağırmak iyi olur. –
Bkz. explicit interface implementation
. TcpClient
örneğini IDisposable
adresine açıkça dökmeniz veya bir using() {...}
satırına sarmanız gerekir. küçük belirtiler var çünkü IDisposable
uygulayan sınıflar açıkça sıklıkla yerine
Ben yabancı bir arayüzde (biliyorum, muhtemelen kötü) için bir fikir edinmesini intellisense sürüyorum, bu benim pet sıkıntılarınızı biridir kamu
Close()
yöntemi sağladığını unutmayın bir kullanım ifadesi uygun olurdu. – spender'using''dan bahsetmişken, hayatımda hiçbir zaman yerel atılabilir bir değişkenle karşılaşmadım. Bütün tek kullanımlarım üyeler. Bu yüzden tüm "kullanma" öfkeleriyle şaşırdım. – CannibalSmith
@CannibalSmith: "using", gerçekten sadece "using" alanında ilgili olan şeyler için onları bir üye olarak tutmak için bir _replacement_. Kullanımlarından biri, bir veritabanı veya ağ bağlantısı açmak, yapmanız gereken işlemleri yapmak ve sonra otomatik olarak kapatmaktır. – Nyerguds