Сообщение Re[7]: [Этюд] Минутка WTF от 27.03.2016 16:08
Изменено 27.03.2016 16:10 rameel
Здравствуйте, -n1l-, Вы писали:
N>Ок, круто, но раз поле — readonly, то значит его значение можно задать в статическом конструкторе.
Можно.
N>Тут мы видим задается значение не в статическом конструкторе.
И там и там.
N>Так в чем проблема?
Я обескуражен, если честно. Есть код, есть результат работы кода. Неужели не видно?
Проблема (проблема ли?) в том, что джит скомпилировал метод CaseB с ридонли-полем, обращаясь с ней как с константой, используя на момент компиляции значение присвоенное в статическом конструкторе. Соотвественно, когда значение поля изменяется, на результат работы метода это уже никак не сказывается.
N>Ок, круто, но раз поле — readonly, то значит его значение можно задать в статическом конструкторе.
Можно.
N>Тут мы видим задается значение не в статическом конструкторе.
И там и там.
N>Так в чем проблема?
Я обескуражен, если честно. Есть код, есть результат работы кода. Неужели не видно?
Проблема (проблема ли?) в том, что джит скомпилировал метод CaseB с ридонли-полем, обращаясь с ней как с константой, используя на момент компиляции значение присвоенное в статическом конструкторе. Соотвественно, когда значение поля изменяется, на результат работы метода это уже никак не сказывается.
// Выполнили...
A: Not set
B: Not set
C: Not set
// Поменяли значение
// Проверяем, что, то что нужно изменило свое значение
A/B/C set? False, True, True
// Еще раз вызываем методы...
A: Not set
B: Not set <-- здесь видим, что метод никак не отреагировал на изменение поля
C: Set <-- здесь обычное поле
Done
... << RSDN@Home 1.0.0 alpha 5 rev. 0>>
Re[7]: [Этюд] Минутка WTF
Здравствуйте, -n1l-, Вы писали:
N>Ок, круто, но раз поле — readonly, то значит его значение можно задать в статическом конструкторе.
Можно.
N>Тут мы видим задается значение не в статическом конструкторе.
И там и там.
N>Так в чем проблема?
Я обескуражен, если честно. Есть код, есть результат работы кода. Неужели не видно?
Проблема (проблема ли?) в том, что джит скомпилировал метод CaseB с ридонли-полем, обращаясь с ней как с константой, используя на момент компиляции значение присвоенное в статическом конструкторе. Соответственно, когда значение поля изменяется, на результат работы метода это уже никак не сказывается.
N>Ок, круто, но раз поле — readonly, то значит его значение можно задать в статическом конструкторе.
Можно.
N>Тут мы видим задается значение не в статическом конструкторе.
И там и там.
N>Так в чем проблема?
Я обескуражен, если честно. Есть код, есть результат работы кода. Неужели не видно?
Проблема (проблема ли?) в том, что джит скомпилировал метод CaseB с ридонли-полем, обращаясь с ней как с константой, используя на момент компиляции значение присвоенное в статическом конструкторе. Соответственно, когда значение поля изменяется, на результат работы метода это уже никак не сказывается.
// Выполнили...
A: Not set
B: Not set
C: Not set
// Поменяли значение
// Проверяем, что, то что нужно изменило свое значение
A/B/C set? False, True, True
// Еще раз вызываем методы...
A: Not set
B: Not set <-- здесь видим, что метод никак не отреагировал на изменение поля
C: Set <-- здесь обычное поле
Done
... << RSDN@Home 1.0.0 alpha 5 rev. 0>>