2013-08-27 2 views
0

Откуда вы знаете, type является reference type или value type. Например, согласно статье about.com (http://visualbasic.about.com/b/2005/10/29/when-is-a-copy-not-a-copy.htm) integer type всегда является value type, а array type может быть value type или reference type. В том же примечании, при копировании cookiecontainer необходимо использовать метод clone() или работает =? То есть будет = создать копию или ссылку cookiecontainer?Как узнать, какой тип является ссылочным типом или типом значения в Visual Studio

Примечание: Мне кажется, что, как он используется в этом коде, = создает копию.

От: http://howtostartprogramming.com/vb-net/vb-net-tutorial-52-httpwebrequest-cookiecontainer/

Imports System.Net 
Imports System.Text 
Imports System.IO 

Public Class Form1 

    Dim logincookie As CookieContainer 

    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click 

     Dim postData As String = "referer=http%3A%2F%2Fforums.zybez.net%2Findex.php%3Fapp%3Dcore%26module%3Dglobal%26section%3Dlogin&username=" & TextBox1.Text & "&password=" & TextBox2.Text & "&rememberMe=1" 
     Dim tempCookies As New CookieContainer 
     Dim encoding As New UTF8Encoding 
     Dim byteData As Byte() = encoding.GetBytes(postData) 

     Dim postReq As HttpWebRequest = DirectCast(WebRequest.Create("http://forums.zybez.net/index.php?app=core&module=global&section=login&do=process"), HttpWebRequest) 
     postReq.Method = "POST" 
     postReq.KeepAlive = True 
     postReq.CookieContainer = tempCookies 
     postReq.ContentType = "application/x-www-form-urlencoded" 
     postReq.Referer = "http://forums.zybez.net/index.php?app=core&module=global&section=login&do=process" 
     postReq.UserAgent = "Mozilla/5.0 (Windows; U; Windows NT 6.1; ru; rv:1.9.2.3) Gecko/20100401 Firefox/4.0 (.NET CLR 3.5.30729)" 
     postReq.ContentLength = byteData.Length 

     Dim postreqstream As Stream = postReq.GetRequestStream() 
     postreqstream.Write(byteData, 0, byteData.Length) 
     postreqstream.Close() 
     Dim postresponse As HttpWebResponse 

     postresponse = DirectCast(postReq.GetResponse(), HttpWebResponse) 
     tempCookies.Add(postresponse.Cookies) 
     logincookie = tempCookies 
     Dim postreqreader As New StreamReader(postresponse.GetResponseStream()) 

     Dim thepage As String = postreqreader.ReadToEnd 

     RichTextBox1.Text = thepage 

    End Sub 


    Private Sub Button3_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button3.Click 

     Dim request As HttpWebRequest = DirectCast(WebRequest.Create("http://forums.zybez.net/index.php?app=core&module=usercp"), HttpWebRequest) 
     request.CookieContainer = logincookie 
     Dim response As HttpWebResponse = DirectCast(request.GetResponse(), HttpWebResponse) 
     Dim reader As New StreamReader(response.GetResponseStream()) 
     Dim theusercp As String = reader.ReadToEnd 

     RichTextBox2.Text = theusercp 

    End Sub 
End Class 

UPDATE 1

Из MSDN (http://msdn.microsoft.com/en-us/library/t63sy5hs.aspx) все classes являются reference types поэтому делает cookiecontainerreference type.

ответ

2

это то, что вы хотите:

dim x = 100 
dim isValueType = x.GetType.IsValueType 
+0

Это может быть, однако, я ищу, чтобы сделать это в среде Visual Studio. Конечно, я мог бы написать этот код и отобразить тип в окне сообщения, но мне интересно, есть ли один лаконичный способ узнать, не записывая временный код. –

+0

Я не понял вас - вы хотели знать, является ли это значением/ссылочным типом во время выполнения или что? – Rex

+0

Да во время выполнения. –