Рейтинг:
10
Thomas Daniels
Между ними нет никакой функциональной разницы. a = b = "";
эквивалентно a = ""; b = "";
. *
Нет никакого "лучшего": вы обычно должны идти за наиболее читаемым и адаптируемым кодом, но в этом случае ни то, ни другое на самом деле не лучше и не хуже, на мой взгляд. Идите с тем, что вы предпочитаете.
* Немного глубже: a = b = "";
анализируется как a = (b = "");
какие средства: b
получает набор в ""
, выражение (b = "")
возвращается ""
(потому что это новое значение b) и a
получает присвоенное значение.
NithyaKumarJai
спасибо Томас Дэниелс
Ravi Bhavnani
На самом деле существует разница в производительности, когда речь заходит о непримитивных типах. Цепочка назначений не рекомендуется, когда средство доступа к значениям выполняет дорогостоящую операцию (или ненулевое усилие). По этой причине (в случае того, что попросил ОП) лучше сделать так::
TextBox2.Text = строка.Пустой;
TextBox3.Text = строка.Пустой;
а чем поле textbox2.Текст = Textbox3 И.Текст = строка.Пустой;
/Рави
Thomas Daniels
Хорошая мысль, не подумал об этом. Я обновил свой ответ, чтобы процитировать вас.
Richard Deeming
Вы в этом уверены?
a.Text = b.Text = Bar();
звонки Bar
ровно один раз, а набор методов доступа к свойствам-ровно один раз для каждого экземпляра. Метод доступа get никогда не вызывается.
Пример[^]
Ravi Bhavnani
Моя точка зрения заключалась в том, что в случае вопроса OP дешевле инициализировать свойство Text 2 элементов управления в string.Пусто, а не получать свойство Text первого, чтобы использовать его в качестве значения 2-го элемента управления. Если я не ошибаюсь, текстовый аксессор вызывает SendMessage (hWnd, WM_GETTEXT) под обложкой. Было бы дешевле вместо этого использовать постоянную строку.Пустой.
/Рави
Richard Deeming
И я хочу сказать, что цепная версия вообще не вызывает метод доступа get. :)
Ravi Bhavnani
Да, я только что осознал свою ошибку! Спасибо!
/Рави
Ravi Bhavnani
О, я понимаю, что ты имеешь в виду. Да, мое предположение неверно. Похоже (по вашему эксперименту), что значение, возвращаемое из Bar (), кэшируется средой CLR с целью выполнения множественного назначения. Спасибо, что обратили на это внимание.
/Рави