2009-12-30 58 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

相关问题