Новая версия платформы MetaTrader 5 build 3320: Улучшения и исправления - страница 13

 
White Rabbit #:

В случае если есть перекрытие переменных - то нет, не баг и все верно, но ведь тут идет явное обращение к переменной объекта класса и ничего не перекрывается.

Разве нет?

Я думаю, компилятор выдает предупреждение на строку:

  A (string a) {

 
PapaYozh #:

Я думаю, компилятор выдает предупреждение на строку:

  A (string a) {

Да, все верно.

Но, получается, что ссылка на переменную объекта через this работает корректно, но при этом выводится ворнинг.

Может это все таки баг парсинга?

 
White Rabbit #:

Да, все верно.

Но, получается, что ссылка на переменную объекта через this работает корректно, но при этом выводится ворнинг.

Может это все таки баг парсинга?

Это не баг, а подсказка вам не совершать заведомо опасных действий.
 
White Rabbit #:

Да, все верно.

Но, получается, что ссылка на переменную объекта через this работает корректно, но при этом выводится ворнинг.

Может это все таки баг парсинга?

Конечно, корректно.
Но компилятор предупреждает Вас о потенциальной проблеме.
Вообще, старайтесь не объявлять в методах класса переменные с именами, совпадающими с именами членов.
 
MetaQuotes #:
Это не баг, а подсказка вам не совершать заведомо опасных действий.

В чем опасность, можно пояснить?

 
Sergey Gridnev #:
Конечно, корректно.
Но компилятор предупреждает Вас о потенциальной проблеме.
Вообще, старайтесь не объявлять в методах класса переменные с именами, совпадающими с именами членов.

А в чем потенциальная проблема в конкретно описанном мной случае?

 
White Rabbit #:

В чем опасность, можно пояснить?

В теле метода можно упустить "this." при обращении к члену класса, особенно, когда код больше одной строки. Я вообще всегда предваряю переменные-члены префиксом "m_", т.к. привык с программирования под Андроид к такому.
 
White Rabbit #:

Да, все верно.

Но, получается, что ссылка на переменную объекта через this работает корректно, но при этом выводится ворнинг.

Может это все таки баг парсинга?

Я понимаю Вашу логику, но разработчики компилятора считают, что в таком подходе присутствует потенциальная опасность и они по-своему правы.
 
Sergey Gridnev #:
В теле метода можно упустить "this." при обращении к члену класса, особенно, когда код больше одной строки. Я вообще всегда предваряю переменные-члены префиксом "m_", т.к. привык с программирования под Андроид к такому.

А я привык в Java к обращению через this и ничего не забываю.

А то почему вас в андройде так приучили, можете почитать вот тут ) 

Я являюсь причиной появления венгерской нотации в Android
Я являюсь причиной появления венгерской нотации в Android
  • 2017.07.18
  • habr.com
Все из нас видели это: Это из-за меня. Я так и сказал — это моя вина. Эта тема всплывает снова и снова, обсуждение на reddit напомнило, что я никогда не объяснял откуда взялась эта нотация, а также, насколько она неправильно понимается людьми. Поэтому мне бы хотелось воспользоваться возможностью, дабы прояснить некоторые вещи, и я сделаю это в...
 
White Rabbit #:

А то почему вас в андройде так приучили, можете почитать вот тут ) 


Я знаю, что "m" от слова "member".
Когда я начал изучать ведроид, то принял правила, которые там приняты. Потом привык.