Différence entre les membres statiques et non statiques?

Dupliquer possible:
Qu’est-ce qu’une méthode statique en c #?

J’ai eu du mal à comprendre le concept actuel de membres statiques et non statiques (après avoir recherché dans de nombreux forums, j’ai décidé de poser ma question ici:

Quelle est la différence entre les membres statiques et non statiques?

Les méthodes static peuvent être accédées directement à partir de la classe, alors que non-static méthodes non-static (ou les méthodes d’instance comme je les appelle) doivent être accessibles à partir d’une instance. C’est pourquoi il est nécessaire d’installer des méthodes d’instance, alors que pour les méthodes statiques, cela n’est tout simplement pas nécessaire.

Dans OOP, static variables sont utilisées pour les valeurs qui ne peuvent pas être stockées par une variable d’instance. static methods peuvent pas accéder aux méthodes d’instance ou aux variables d’une classe. Bien sûr, cela a du sens car cette méthode statique ne sait pas à quelle instance de la classe nous essayons de faire référence.

Par exemple, supposons que vous vouliez garder le nombre d’instances d’une classe existantes? Comment stockeriez-vous cela en une seule fois?

Références:

  1. Méthode statique vs non statique en C #
  2. Méthode statique ou non statique
  • static membres static sont un par classe, mais les membres non statiques sont un par instance.

  • static membres static sont accessibles par leur nom de classe qui les encapsule, mais les membres non statiques sont accessibles par référence d’object.

  • static membres static ne peuvent pas utiliser de méthodes non statiques sans instancier un object, mais les membres non statiques peuvent directement utiliser static membres static .

  • static constructor est utilisé pour initialiser les champs statiques, mais pour les champs non statiques, le constructeur d’instance normale est utilisé.

  • Voir ici pour les points liés à la performance.