Méthode statique d'une classe statique vs méthode statique D'une classe Non statique (C#)

On m'a posé la question ci-dessus dans une interview. Pourriez-vous expliquer les différences? ( performance - mémoire - utilisation - quand à utiliser ? )

Merci,

Erkan

43
demandé sur Erkan Y. 2010-02-15 19:33:34

5 réponses

Déclarer une classe statique documente votre intention pour que cette classe soit une collection de fonctionnalités statiques, et toute personne ajoutant des membres d'instance obtiendra une erreur de compilation.

Une classe non statique avec des membres statiques indique généralement que la classe est conçue pour être instanciée à un moment donné. Les méthodes statiques de ces classes font généralement l'une des deux choses suivantes:

  1. fournit une méthode factory pour créer une instance de ce type;
  2. Fournir une fonctionnalité d'aide qui ne nécessite pas une instance du type;

Aussi, comme déjà mentionné, les méthodes d'extension ne peuvent être déclarées que sur une classe statique.

46
répondu Seth Petry-Johnson 2010-02-15 16:43:19

Je suppose qu'on vous a demandé les différences?

Une méthode statique sur une classe statique peut être utilisé pour définir une méthode d'extension. Une méthode statique sur une classe non statique ne peut pas.

18
répondu JaredPar 2010-02-15 16:40:12

En termes de performance et d'utilisation de la mémoire; précisément rien. Avoir une classe statique signifie que vous connaissez Il n'y a pas d'instances, mais de retour dans 1.1 avoir un constructeur privé suffit. Utilisez une classe statique si cela n'a tout simplement aucun sens d'avoir une instance! (classes d'utilité etc)

15
répondu Marc Gravell 2010-02-15 16:37:04

Lorsque vous fournissez des fonctions utilitaires et que toutes vos méthodes sont statiques, je vous recommande d'utiliser des méthodes statiques dans une classe statique.

Lorsque vous souhaitez fournir des méthodes utilitaires qui traitent uniquement votre instance, je vous recommande d'utiliser des méthodes statiques dans une classe non statique. Par exemple:

var myClass = MyClass.Create();
var myClass = MyClass.Parse("serialized.MyClass");
6
répondu mythz 2011-06-09 04:43:32

Une différence majeure que j'ai rencontrée en décidant d'aller avec la classe normale avec toutes les méthodes statiques ou, utiliser une classe statique, est qu'une classe normale prend en charge l'implémentation de l'interface, alors que la classe statique ne le fait pas. J'utilise la classe statique seulement quand je suis sûr que ce sera une collection de fonctions statiques (généralement des fonctions d'AIDE), et ne sera jamais dans le flux principal du programme. Je favorise la programmation d'interface, pour les injections de dépendance,les tests unitaires, etc. Donc, pour le flux principal du programme, j'utilise classe normale avec des méthodes statiques.

-1
répondu Prem 2017-06-09 16:13:48