Статическая переменная против передачи аргумента - PullRequest
0 голосов
/ 25 января 2012

Не удалось сформулировать это в правильном заголовке, извините. Мне интересно, какая польза от статического поля по сравнению с аргументом, который вы продолжаете передавать, пока он не достигнет своего пункта назначения.

Пример:

Xna использует GameTime в своей структуре, которая передается дочерним функциям в функции обновления

protected override void Update(GameTime gameTime)
    {
        base.Update(gameTime);
        world.Update(gameTime);
    }

    //in World class
    public void Update(GameTime gametime)
    {
        //draw all game objects
        for (int i = 0; i < entities.Count; i++)
        {
            entities[i].Update(gametime);
        }
    }

Есть ли какая-то польза от этого, в отличие от хранения где-нибудь статической переменной в игре, обновления этого в корневом классе раньше всего и доступа к этой статической переменной из дочерних классов.

Я всегда вижу передачу аргументов в библиотеках. Но кажется гораздо более «удобным» просто держать его где-то статичным.

Ответы [ 2 ]

0 голосов
/ 27 января 2012

И ваш метод может быть проверен проще, когда вы вводите параметры.Например, у вас может быть поддельный объект GameTime, который вы можете передать, чтобы имитировать его поведение.

0 голосов
/ 25 января 2012

Это статическое поле используется всеми экземплярами класса. Статические и изменчивые обеспечивают опасную смесь, если она не тщательно контролируется. Вы не хотите, чтобы кто-нибудь протянул руку и прикоснулся к этому полю, если только не требуется, чтобы ВСЕ экземпляры нуждались в изменении.

...