gpt4 book ai didi

vb.net - 为什么这用 "Is"而不是用 "IsNot"编译?

转载 作者:行者123 更新时间:2023-12-05 00:56:44 25 4
gpt4 key购买 nike

我正在修改一些旧的 VB 代码,如果捕获到异常,我希望函数能够提前返回,但如果它是 System.UnauthorizedAccessException该功能应该继续。只是为了不让我收到 XY'ed ,我知道这是一个奇怪的要求,但我正在用 C# 重写代码,我只需要看到这样的结果。我知道可能有更好的方法来做到这一点。这是原始代码:

Try
doSomeStuffWithFiles(files)
Catch ex As Exception
MsgBox("Far Field: error in reading / writing to far field file." & Chr(13) & ex.Message)
Exit Sub
End Try

所以我添加了几行:
Catch ex As Exception
MsgBox("Far Field: error in reading / writing to far field file." & Chr(13) & ex.Message)
If TypeOf ex IsNot System.UnauthorizedAccessException Then
Exit Sub
End If
End Try

现在,我不是 VB 专家,但据我所知,这是完全有效的 VB。它也与 TypeOf 的示例代码完全匹配在 MSDN .但是,此代码无法编译。我收到此错误:
Error   21  'Is' expected.  C:\FilePath 3114    26  Project
Error 22 'UnauthorizedAccessException' is a type in 'System' and cannot be used as an expression. C:\FilePath 3114 32 Project

如果我将该行更改为
Catch ex As Exception
MsgBox("Far Field: error in reading / writing to far field file." & Chr(13) & ex.Message)
If TypeOf ex Is System.UnauthorizedAccessException Then
Exit Sub
End If
End Try

然后一切都编译并运行良好。 (没有向后的逻辑)

我正在使用 Visual Studio 2013,并针对 .net framework 2.0。

那么 IsNot的原因是什么?无效?

最佳答案

它会像在 Visual Studio 2015 中一样工作,但是如果您查看 VS2013 version of the docs ,您只会看到 TypeOf ... Is列出,所以你需要使用 Not TypeOf ... Is .

目标 .NET Framework 版本没有区别。如果您使用的是 VS2015,TypeOf ... IsNot会编译。

关于vb.net - 为什么这用 "Is"而不是用 "IsNot"编译?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35877620/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com