Question

Comme dans le titre.Pourquoi ne l' Pile la classe a besoin d'une méthode pour renvoyer une référence de l'objet du dessus?Je l'ai toujours dit, que les méthodes de suggérer qu'il y a quelques informatiques impliqués et que de simples objets doivent être retournés avec les propriétés de la place. Peek() la méthode n'a pas de paramètres et sur un code de niveau, c'est (je pense) une opération simple.

La question est:est-il un speciffic raison?Tout caché comportement qui a des répercussions sur la performance?

EDIT: Je ne sais pas l'implémentation de la classe, mais f.e.si la méthode utilise l'agent recenseur-dessous, puis en itérant le dernier élément de nombreuses fois ce serait imprudent.D'autre part, si c'est un seul IList, alors il ne devrait pas avoir une grande incidence sur les performances.

Était-ce utile?

La solution

Le Peek est un verbe, donc, dans mon livre Peek() devrait être une méthode.Cependant, avec un nom différent, il pourrait également être une propriété.

N'oubliez pas que toute propriété est associé à obtenir et/ou un ensemble de méthodes, de sorte que vous ne finissent avec une méthode à l'autre.

Autres conseils

Je comprends la question "Pourquoi est-il une méthode, une propriété".

Une raison peut être de la cohérence toutes les méthodes d'accès sont en fait des méthodes.Il est totalement une question de style, parce que je ne vois aucune raison de ne pas l'avoir comme un bien, d'un code pur point de vue.

La documentation ne mentionne pas exactement ce que la collecte est en fait utilisé pour manipuler la pile, mais, fondamentalement, il n'y a pas d'autres, plus efficace, de façon à vous donner accès uniquement au "top" de la collection.Nous ne savons pas si le "top" est même le premier ou le dernier élément, il est possible que la pile garde la trace de l'élément est le "top" et ne supprime pas réellement les éclatés des membres (au moins à chaque fois qu'ils se sont éclatés) afin d'éviter d'avoir à déplacer tous les autres éléments (encore une fois, en supposant qu'ils sont l'aide d'un tableau plutôt que de liste liée-comme la structure).

Je dirais que la valeur n'est pas une propriété de l' Stack lui-même, mais un résultat de l'évaluation de la teneur actuelle de la pile, à mon avis, une méthode est plus appropriée qu'une propriété.

Et comme C.Evenhuis mentionne dans sa réponse, Coup d'oeil est un verbe, de sorte qu'une méthode est plus logique.Et que le peek est une terminologie commune pour les opérations sur les piles, il est plus logique de l'utiliser ensuite pour utiliser une nouvelle/autre terme juste pour utiliser une propriété.

Je suis d'accord, peut être un Bien comme TopItem ou quelque chose, parce que intitial sens, mais ne serait-il lever une exception ou retourne la valeur null si vide?Les propriétés ne devraient pas jeter des exceptions, selon MSDN.

À partir de La pile de la source de référence, vous verrez code pour lancer une exception spécifique.

    // Returns the top object on the stack without removing it.  If the stack
    // is empty, Peek throws an InvalidOperationException.
    public virtual Object Peek() {
        if (_size==0)
            throw new InvalidOperationException(Environment.GetResourceString("InvalidOperation_EmptyStack"));
        Contract.EndContractBlock();
        return _array[_size-1];
    }

Maintenant cela diffère de la manière ci-dessus concept de propriété seront traités.Donc, l'un vs l'autre.

edit - ajout de la Propriété de la documentation.Et pas la bonne réponse, mais de fournir de plus amples explications à propos de la logique sur laquelle il n'est pas une propriété.

C'est l'encapsulation, dont le but est de restreindre l'accès à un les objets composants: http://en.wikipedia.org/wiki/Encapsulation_(objet oriented_programming)

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top