Ich bin eine Klasse zu entwickeln, die FTTP- Anfragen senden kann, hat es eine Dienstprogramm-Methode, die verschiedenen Arten von FTP-Methoden ausführen:Ist es eine gute Übung, eine leere using-Anweisung zu verwenden, um ein verfügbares Objekt in C# zu schließen?
private FtpWebResponse DoFttpRequest(Uri uri, NetworkCredential credentials, string method, string file = null)
{
var request = (FtpWebRequest)WebRequest.Create(uri);
request.Credentials = credentials;
request.Method = method;
if (!string.IsNullOrEmpty(file))
{
using (var stream = request.GetRequestStream())
using (var writer = new StreamWriter(stream))
{
writer.Write(file);
}
}
return (FtpWebResponse)request.GetResponse();
}
Wie Sie sehen können, ist diese Methoden ftp Methode ausgeführt und gibt Antwort Strom der Anrufer. Hier ist die Client-Methode, die diese Methode verwendet Zeichenfolge Inhalt in einer Datei über FTP zu schreiben:
public void WriteToFile(string path, string contents)
{
var uri = new Uri(path);
using (var ftpResponse = DoFttpRequest(uri, _credentials, Ftp.UploadFile, contents)) { }
}
Wie Sie sehen können, hier bin ich mit leeren Anweisung using (var ftpResponse = DoFttpRequest(uri, _credentials, Ftp.UploadFile, contents)) { }
des empfangenen Strom zu entsorgen. Ist das ein guter Ansatz, um Objekte so zu entsorgen? Ist es überhaupt notwendig, diesen Strom zu entsorgen, da er wahrscheinlich sowieso vom Müllsammler entsorgt wird?
Warum brauchen Sie eine Referenz, wenn Sie sie nicht benutzen? Ich würde einfach schreiben 'DoFttpRequest (neue Uri (Pfad), _Credentials, Ftp.UploadFile, Inhalt)' –
Es ist notwendig, es zu entsorgen. Anstatt zu verwenden, können Sie 'DoFttpRequest (..). Dispose()' tun. Wenn Sie leer verwenden mit - keine Notwendigkeit, Variable zu deklarieren: 'using (DoFtpRequest (...)) {}'. – Evk
Es scheint mir, dass die Frage nichts mit 'ftp' oder' webrequest' zu tun hat, es geht eher um 'using' im Allgemeinen – Rafalon