使用& +在asp.net中使用vb

时间:2009-07-15 04:33:07

标签: asp.net vb.net

我对+和&的使用感到困惑。在ASP.NET和VB.NET中。请参阅以下代码:

Dim dtUser As DataTable = GetDetails()
        Dim serverPath As String = Nothing
        Dim virtualServerPath As String = Nothing
        Dim parentDir As DirectoryInfo = Nothing
        Dim childDir As DirectoryInfo = Nothing
        serverPath = Page.Server.MapPath(".") + "\"
        virtualServerPath = serverPath.Substring(0, serverPath.LastIndexOf("\"))
        virtualServerPath = virtualServerPath + "\SiteImages\" + dtUser.Rows(0)("Name")
        parentDir = Directory.CreateDirectory(virtualServerPath)
        childDir = parentDir.CreateSubdirectory(Session("RegID"))
        Dim strUserName as String=dtUser.Rows(0)("Name")
        If flUpload.HasFile Then
            flUpload.SaveAs(Server.MapPath("~/SiteImages/" & dtUser.Rows(0)("Name") & "/" & childDir + "/" + flUpload.FileName))

我收到有关使用+和&错误的错误在

 flUpload.SaveAs(Server.MapPath("~/SiteImages/" & strUserName & "/" & childDir + "/" + flUpload.FileName))

任何人都可以帮忙删除错误

4 个答案:

答案 0 :(得分:3)

使用“&”对于连接,“+”将一直有效,直到您有一个值可以在串联中执行数学运算。它将尝试执行添加而不是连接。

例如。

"blah" & "blah" works
"blah" + "blah" works
"blah" & 5 works
"blah" + 5 fails

最后一个不起作用,因为它会尝试“添加”5和一个字符串

答案 1 :(得分:0)

据我所知,VB字符串连接使用&amp ;, 不要使用+

“A”& “B”& “C”=“ABC”

“A”+“B”+“C”= hmmm错误? (编辑)显然这是有效的......

(更多编辑)......

您错误的可能答案:

我不认为这个错误与&或+现在。 它可能是您childDir的{​​{1}}类型。您可能希望获取其中的目录名称,而不是仅仅在字符串concat中删除childDir。

尝试将其更改为&在那个结尾DirectoryInfo

答案 2 :(得分:0)

更改

flUpload.SaveAs(Server.MapPath("~/SiteImages/" & 
                        dtUser.Rows(0)("Name") & 
                                           "/" & 
                                      childDir + 
                                           "/" + 
            flUpload.FileName))

flUpload.SaveAs(Server.MapPath("~/SiteImages/" & 
                        dtUser.Rows(0)("Name") & 
                                           "/" & 
                                      childDir & 
                                           "/" & 
            flUpload.FileName))

并注意@ CodeWiki对this答案的评论,该评论不是在一个声明中混合 + &

答案 3 :(得分:0)

在VB中,&用于字符串连接。您只应使用+进行添加操作。

+的问题在于它尝试进行隐式转换,因此您可以执行

 2.5 + 5

C#会给你一个错误,因为2.5是float而5是int。你需要施放它们。 VB隐式执行转换,可以隐藏一些错误。