Не обновляется свойство класса

148
14 ноября 2021, 14:30

Только сейчас заметил, что C# не обновляет свойства классов, в реальном времени.
Есть свойство в классе Str:

private static readonly string str= !"".Equals(PlayerPrefs.GetString("str")) ? PlayerPrefs.GetString("str") : "str";

Когда я изменяю, где-то в другом месте:

PlayerPrefs.SetString("str", "str2");

И вызываю:

print(Str.str); 

У меня выводит str, за место заявленного str2.
Срабатывает, только после перезапуска...
Что делать и как быть?

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

Answer 1

А с чего str должна стать "str2"? Ты определил его до того, как записать новое значение в PlayerPrefs. Всё равно что удивиться следующему:

void Start () {
    int a = 1;
    aChange(a);
    Debug.Log(a); // Почему в логе 1, а не 2 
}
void aChange (int a) {
    a = 2;
}

Это же не ссылка на объект, а значение. Либо ты ошибся с static. Конструктор для static вызывается всего 1 раз (первый) сколько бы экземпляров классов ты не создал. И в других языках это так-же... и в Java тоже... иначе как-бы у вас Singleton работал.

public static void LogTest () {
    Debug.Log("Result 1: "+ValueStr);
    ValueStr = "str2";
    Debug.Log("Result 2: "+ValueStr);
}
static string SaveValueStr;
public static string ValueStr {
    get {
        if (SaveValueStr == "") {
            SaveValueStr = PlayerPrefs.GetString("str");
            if (SaveValueStr == "") { SaveValueStr = "str"; }
        }
        return SaveValueStr;
    }
    set {
        SaveValueStr = value;
        PlayerPrefs.SetString("str", SaveValueStr);
    }
}

Используй модификаторы доступа get/set.

READ ALSO
Не работает выбор контролов с DockStyle.Top

Не работает выбор контролов с DockStyle.Top

У меня есть панель с контролами, у некоторых Dock = DockStyleTop, у некоторых Bottom

167
не срабатывает Picturebox_DragEnter

не срабатывает Picturebox_DragEnter

вроде все правильно написал, но Drag enter не работаетallowdrop где находится я не нашел что можно сделать?

222
Сайт вордпресс в подпапке /rus/

Сайт вордпресс в подпапке /rus/

Существует сайт на вордпресс sitenameru , мне требуется создать отдельную версию, только для одной страны, которую будет перенаправлять на sitename

78
Ссылка не работает без "/" в конце

Ссылка не работает без "/" в конце

Значит такая проблема: при вызове https://url/check получаю ошибку 301 а при вызове https://url/check/ все отлично работает, но мне нужно чтоб работала https://url/check...

174