在程序中,調用名爲HandleHttpRequest
的方法,該方法接受HttpContext
類的參數。爲什麼我們可以從作爲值傳遞給方法的參數獲取更新結果?
HandleHttpRequest
處理httpContext.Request
中的傳入請求並寫入對httpContext.Response
的響應。
我的問題是爲什麼在撥打HandleHttpRequest
完成後,程序可以獲得寫入httpContext.Response
的響應?
是httpContext
作爲值傳遞給HandleHttpRequest
,而不是引用,是否正確?
謝謝。
HttpRequest httpRequest = new HttpRequest("", "http://localhost/my.ashx", "timestamp=20170216");
MemoryStream memoryStream = new MemoryStream();
TextWriter textWriter = new StreamWriter(memoryStream);
HttpResponse httpResponse = new HttpResponse(textWriter);
HttpContext httpContext = new HttpContext(httpRequest, httpResponse);
HandleHttpRequest(httpContext);
textWriter.Flush();
byte[] buffer = memoryStream.GetBuffer();
的HandleHttpRequest
簽名是
public void HandleHttpRequest(HttpContext context)
所以它的參數是不是一個參考。
'httpContext'通過值傳遞,但它是對的'實例的引用HttpContext'所以如果它通過'HandleHttpRequest'中的共享引用進行變異,所做的更改將可見。 – Lee
您正將*參考*的值傳遞給'httpContext'的一個實例。用簡單的英語,你傳入一個對'HttpContext'實例的引用。這個方法不是爲了創建一個克隆,而是爲了'HttpContext'的那個實例。 –
*「是否將httpContext作爲HandleHttpRequest的值傳遞給HandleHttpRequest,而不是引用,是否正確?」 - 顯然,這是不正確的,因爲您所看到的行爲無疑是與您在同一個實例上運行的方法,而不是複製。誰告訴你'HandleHttpRequest'獲得'httpContext'的副本,爲什麼你暫時相信它可能是真的? –