vb.net如果是速记

Sky*_*ell 19 .net vb.net

有没有办法用速记来做这样的事情?

If Not txtBookTitle.Text = String.Empty Then
  objBook.DisplayName = txtBookTitle.Text
End If
Run Code Online (Sandbox Code Playgroud)

Mik*_*ran 30

objBook.DisplayName = If(Not (txtBookTitle.Text = String.Empty), txtBookTitle.Text, objBook.DisplayName)
Run Code Online (Sandbox Code Playgroud)

  • 这比[原始]长1个字符(http://www.lettercount.com/),包括空格.:) (6认同)
  • 不要怪我,责备vb没有实现一个合适的三元运算符:P (2认同)

Rom*_*ain 8

以下代码类似于您的三行代码:

objBook.DisplayName = IIF(String.IsNullorEmpty(txtBookTitle.Text),objBook.DisplayName, txtBookTitle.Text)
Run Code Online (Sandbox Code Playgroud)

  • 我不建议使用 IIF。*两个参数都将被评估*并且可能会产生意想不到的结果,例如*如果您使用函数。*考虑这个`IIF(TRUE,JustPrintOK(),ImplodeTheUniverse())`...我们注定要失败,因为这两个函数都将被执行无论状况如何。对于 VB >= 9 只需使用 `IF` 就像您的示例一样,它将可以正常工作而不会出现此问题。 (4认同)

Jay*_*Gee 6

if语句有两种版本的简写.If(表达式,true部分,false部分)或If(表达式,false部分)

objBook.DisplayName = If(String.IsNullOrEmpty(txtBookTitle.Text), txtBookTitle.Text)
Run Code Online (Sandbox Code Playgroud)


Neo*_*isk 5

这是最短的版本(81 个字符):

If txtBookTitle.Text <> String.Empty Then objBook.DisplayName = txtBookTitle.Text
Run Code Online (Sandbox Code Playgroud)

我更喜欢这样的调试能力。还可以轻松转换为 C#。

  • 我认为它也比 ... If Not txtBookTitle.Text = String.Empty 更清晰 (3认同)