gpt4 book ai didi

vb.net - 这些代码块之间有什么区别,为什么前者会失败,我应该如何调试它?

转载 作者:行者123 更新时间:2023-12-02 11:37:01 26 4
gpt4 key购买 nike

我写道:

    MfgRecipeTypeKey = If(placeholderMRTK Is Nothing, 0, placeholderMRTK)

这一切都很好,但是当 placeholderMRTK 实际上是什么时,它会失败,不会引发异常,只是退出子程序(对于对话框表单是 MyBase.Load )并继续应用程序。当我将其重写为:

    If placeholderMRTK Is Nothing Then
MfgRecipeTypeKey = 0
Else
MfgRecipeTypeKey = placeholderMRTK
End If

效果很好。我认为这两者在逻辑上是等价的。

所以:

1)我不知道的这两者之间的实际区别是什么?

2)为什么第一个可能会失败?我有点想知道这是否是一些奇怪的类型转换问题,但占位符MRTK和MfgRecipeTypeKey都被声明为字节? (可为空字节)类型。

3) 为什么执行会脱 ionic 进程而不会出现异常。当该行在 Visual Studio(Pro 2013,如果重要的话)中突出显示并且我按下 f11 进入下一行时,它只是跳出并运行数据网格渲染事件,然后显示我的对话框,但没有在幕后进行一些重要的数据分配。鉴于它确实做到了这一点(这是 2013 年的新行为吗?),我应该如何调试?

感谢您的时间和关注!

最佳答案

If() operator with three arguments您使用期望两个可能的分支返回相同类型的值。

使用的时候不是这样的

MfgRecipeTypeKey = If(placeholderMRTK Is Nothing, 0, placeholderMRTK)

因为 placeholderMRTK 的类型为 Nullable(Of Byte),而 0 的类型为 Integer

<小时/>
 If placeholderMRTK Is Nothing Then
MfgRecipeTypeKey = 0
Else
MfgRecipeTypeKey = placeholderMRTK
End If

之所以有效,是因为 VB.Net 允许您将 0 隐式转换为 Byte

<小时/>

你可以使用

MfgRecipeTypeKey = If(placeholderMRTK Is Nothing, CType(0, Byte), placeholderMRTK)

0转换为Byte,或者简单地使用

MfgRecipeTypeKey = If(placeholderMRTK, 0)

关于vb.net - 这些代码块之间有什么区别,为什么前者会失败,我应该如何调试它?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30919019/

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