mot*_*tto 1 .net vb.net integer nullable
我试图理解为什么两个代码示例的行为不同.我一直认为If()函数可以模仿If语言特性.或者我是否正在查看导致此问题的Nullable(Of Integer)行为?
样品#1:
If Not String.IsNullOrWhiteSpace(PC.SelectedValue) Then
Dim pcFilter1 As Integer? = CInt(PC.SelectedValue)
Else
Dim pcFilter1 As Integer? = Nothing
End If
Run Code Online (Sandbox Code Playgroud)
样品#2:
Dim pcFilter2 As Integer? = If(Not String.IsNullOrWhiteSpace(PC.SelectedValue),
CInt(PC.SelectedValue),
Nothing)
Run Code Online (Sandbox Code Playgroud)
结果:
pcFilter1 =没什么
pcFilter2 = 0
在示例#2中,您的CInt演员导致了问题.If()构造尝试确定第2和第3个参数的公共类型.将第二个参数看作一个整数,然后将Nothing转换为一个整数,由于VBs魔法转换导致0.例如
Dim i As Integer = Nothing 'results in i being set to 0
Run Code Online (Sandbox Code Playgroud)
要使用If()获得所需内容,请尝试以下操作:
Dim pcFilter2 As Integer? = If(Not String.IsNullOrWhiteSpace(PC.SelectedValue),
New Integer?(CInt(PC.SelectedValue)),
Nothing)
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1267 次 |
| 最近记录: |