2009-12-30 37 views
1

例子:爲什麼相同的字符串有時表現不同? (VB.NET COM接口)

Dim Sh32 As Object = CreateObject("Shell.Application") 
Dim path As String = "C:\temp\catalog.zip" 
Dim sf As Object = Sh32.NameSpace(path) 

- >不工作,SF =無

Dim Sh32 As Object = CreateObject("Shell.Application") 
Dim path As String = "C:\temp\catalog.zip" 
Dim sf As Object = Sh32.NameSpace(path.ToString) 

- >工作

任何想法?

顯然path = path.ToString,但它們在用作COM參數時行爲不同。

+0

你爲什麼要使用COM這個? Process類應該可以執行任何Shell.Application可以執行的操作。 – 2009-12-31 01:59:21

+0

謝謝,但我使用sf.MoveHere(newpath.ToString)將一個文件添加到一個zip文件中,並且在Process類中沒有等效的功能。 .NET framwork的ZipPackage類是一種替代方案,但它總是添加一個元文件[ContentType] .xml。 – GerdR 2009-12-31 09:50:25

回答

-1

嗯,我不知道VB和/或COM不夠好細節,但也許有一個字符串對象和一個字符串表示之間的差異?

應該是有趣的,看到有人「知道」解決難題;)

+0

ToString()的字符串類型的實現是「return this」,所以根本不應該有任何效果。 (並且不,字符串對象和它的表示之間沒有區別 - 它們都是字符串) – Eilon 2009-12-30 22:54:29

+0

我執行了一系列額外的測試,發現它甚至足以將語句中的圓括號加倍以使其工作: Dim sf As Object = Sh32.NameSpace((path))。到目前爲止,我的結論是它是VB.NET IL編譯器的一個問題 – GerdR 2009-12-31 10:44:24

相關問題