vb.net - 如果运行多个单行 If 语句,是否需要多个 Else 语句?
问题描述
我有一个语句在一行上执行两个 If 检查:
If JMdict(i).Senses.Count > 0 Then If JMdict(i).Senses.First.Gloss.Count > 0 Then meaning = JMdict(i).Senses.First.Gloss.First Else meaning = ""
我想知道是否需要添加第二个 Else,如下所示:
If JMdict(i).Senses.Count > 0 Then If JMdict(i).Senses.First.Gloss.Count > 0 Then meaning = JMdict(i).Senses.First.Gloss.First Else meaning = "" Else meaning = ""
还是第一个 Else 会覆盖所有代码路径?
基本上,我应该做什么
If [First Condition] Then If [Second Condition] Then [Result] Else [Nothing happens]
或者
If [First Condition] Then If [Second Condition] Then [Result] Else [Nothing happens] Else [Nothing happens]
我知道我可以AndAlso
用作一个更整洁的解决方案,我只是好奇这个单行嵌套 If 在实践中如何工作。
解决方案
你的代码
If JMdict(i).Senses.Count > 0 Then If JMdict(i).Senses.First.Gloss.Count > 0 Then meaning = JMdict(i).Senses.First.Gloss.First() Else meaning = ""
是这个的缩写
If JMdict(i).Senses.Count > 0 Then
If JMdict(i).Senses.First.Gloss.Count > 0 Then
meaning = JMdict(i).Senses.First.Gloss.First()
Else
meaning = ""
End If
End If
因此,如果JMdict(i).Senses.Count <= 0
then 含义将不会被设置。
我可能会这样做,使用你提到的短路AndAlso
If JMdict(i).Senses.Any() AndAlso JMdict(i).Senses.First().Gloss.Any() Then meaning = JMdict(i).Senses.First().Gloss.First() Else meaning = ""
或使用If()
稍微缩短代码
meaning = If(JMdict(i).Senses.Any() AndAlso JMdict(i).Senses.First().Gloss.Any(), JMdict(i).Senses.First().Gloss.First(), "")
使用If()
清楚地表明意义将被设定,因为我们从meaning =
对于有阅读障碍的人,If()
功能可以拆分成多行
meaning = If(JMdict(i).Senses.Any() AndAlso JMdict(i).Senses.First().Gloss.Any(),
JMdict(i).Senses.First().Gloss.First(),
"")
您还可以If()
用作 Null Coalescing 运算符。注意这个版本If()
只需要两个参数
meaning = If(JMdict(i).Senses.FirstOrDefault()?.Gloss.FirstOrDefault(), "")
推荐阅读
- php - 无法在共享主机上通过 php 运行 bash 脚本
- powershell - 找不到“XmlMessageFormatter”的重载和参数计数:Powershell 中的 N 和 New-Object
- c - 在具有最新 XCode 的 MacOS Catalina 上,__DARWIN_C_LEVEL 对于 String.h 来说太低了……我该怎么办?
- docker - Debian 的 zic 缺少 -b 选项
- python - 如何允许客户端连接到 python 服务器?
- laravel - 两个模型的 Laravel 关系和枢轴
- css-selectors - 另一个类中包含的第一次出现的类的 CSS 选择器
- android - 在 TensorFlow Lite C API 中注册自定义算子
- python - 处理使用“http”下载的 JSON 时出错 - TypeError:字符串索引必须是整数
- python - 如何对每 n 次出现的范围进行切片?