Member 10103170 Ответов: 3

Какой код самый лучший VB.NET


If role = "Administrator" Then
   MultiLevelMenu.Visible = True
Else
   MultiLevelMenu.Visible = False
End If

или
MultiLevelMenu.Visible = role = "Administrator"


Что я уже пробовал:

Это просто читабельность?

3 Ответов

Рейтинг:
6

Patrice T

Оба кода делают одно и то же, и они тоже компилируются в один и тот же код.
Первую форму обычно предпочитают новички, потому что им легче читать.
Вторая форма обычно предпочитается экспериментирующими пользователями, потому что она более компактна и так же легко читается.
Я предпочитаю

MultiLevelMenu.Visible = ( role = "Administrator" )

потому что некоторые языки допускают каскадное присвоение и seconf form переводят на:
role = "Administrator"
MultiLevelMenu.Visible = role


Member 10103170

Спасибо, не был уверен, что это более эффективно, но если он компилируется в тот же код, то более легкий для чтения сегмент будет в порядке.

Patrice T

Современные компиляторы-это оптимизаторы.

Рейтинг:
0

OriginalGriff

Используйте первое: второе сбивает с толку, так как подразумевает, что оно должно читаться как два задания:

role = "Administrator"
MultiLevelMenu.Visible = role
(Это одна из причин, по которой C# является лучшим языком, чем VB: оператор присваивания " = "не совпадает с оператором проверки равенства" ==")

Если вы чувствуете, что должны написать вторую форму, то, по крайней мере, используйте скобки, чтобы сделать ее более ясной:
MultiLevelMenu.Visible = (role = "Administrator")
Но только потому, что вы можете что-то сделать, это не значит, что вы должны...


Рейтинг:
0

Suvendu Shekhar Giri

Я не из VB.Чистый фон, но если я могу связать это с C#, либо вы можете попробовать первый вариант, т. е.,

If role = "Administrator" Then
   MultiLevelMenu.Visible = True
Else
   MultiLevelMenu.Visible = False
End If

Или вы можете использовать тернарный оператор
'MultiLevelMenu.Visible = (role == "Administrator"? true : false) //in c#
MultiLevelMenu.Visible = If(role = "Administrator", true, false)


С точки зрения производительности оба должны быть одинаковыми, так как эти утверждения будут переведены в MSIL и должны быть одинаковыми в то время.

Надеюсь, это поможет :)