.Net - 将代码片段从C#转换为VB.Net的问题

时间:2009-08-09 14:07:38

标签: c# .net vb.net

我在将以下代码片段从C#转换为VB.Net时遇到问题:

if ((currentItem.Tag as FileSystemKind?) != FileSystemKind.File)
            {
                if (currentFileName == GOBACK)
                    currentPath = currentPath.Substring(0, currentPath.Length - Path.GetFileName(currentPath).Length - 1);
                else
                    currentPath = Path.Combine(currentPath, currentFileName);
                UpdateControls();
            }
            else
            {
                //If it's a file, we should return the selected filename
                fileName = Path.Combine(currentPath, currentFileName);
                EndOk();
            }

问题在于以下几行:

if ((currentItem.Tag as FileSystemKind?) != FileSystemKind.File)

我尝试了两种不同的在线转换器,这些转换器建议我进行以下转换(对于上面一行):

第一名:

If (TryCast(currentItem.Tag, FileSystemKind)?) <> FileSystemKind.File Then

第二个:

If TryCast(currentItem.Tag, System.Nullable(Of FileSystemKind)) <> FileSystemKind.File Then

我在VB.Net中遇到的错误是:

  

TryCast'操作数必须是引用类型,但'FileSystemKind?'是一种价值类型。

代码来自针对Net.Compact Framework 2.0的项目,但我认为大多数应该与普通的Compact Framework兼容。

我迷路了。谁可以帮助我?

PS:我很抱歉问题中的代码布局。有没有办法将字体大小更改为较小的字体?

谢谢!

3 个答案:

答案 0 :(得分:3)

Reflector中加载已编译的.dll,然后将视图语言更改为VB,并为您翻译。

 If (DirectCast(TryCast(currentItem.Tag,FileSystemKind?), FileSystemKind) <> FileSystemKind.File) Then
    End If

答案 1 :(得分:2)

如果currentItem.Tag始终是FileSystemKind类型,您可以尝试


If (DirectCast(currentItem.Tag, FileSystemKind) <> FileSystemKind.File) Then

如果currentItem.Tag 总是类型为FileSystemKind,你可以尝试


        If TypeOf (currentItem.Tag) Is FileSystemKind Then
            If (DirectCast(currentItem.Tag, FileSystemKind) <> FileSystemKind.File) Then
            End If
        Else
            ' handle different types
        End If

您也可以使用“CType”将变体对象“currentItem.Tag”的类型转换或强制转换为FileSystemKind


If (CType(currentItem.Tag, FileSystemKind) <> FileSystemKind.File) Then

答案 2 :(得分:1)

If TypeOf(currentItem.Tag) Is FileSystemKind AndAlso CType(currentItem.Tag, FileSystemKind) = FileSystemKind.File Then