Maison > développement back-end > C++ > Pourquoi « Une référence d'objet est requise » apparaît-il lors de l'appel d'une méthode non statique à partir d'une méthode statique en C# ?

Pourquoi « Une référence d'objet est requise » apparaît-il lors de l'appel d'une méthode non statique à partir d'une méthode statique en C# ?

DDD
Libérer: 2025-01-22 05:24:16
original
193 Les gens l'ont consulté

Why Does

Erreur de code C# : "Une référence d'objet est requise pour accéder à un champ, une méthode ou une propriété non statique"

L'extrait de code fourni génère une erreur dans la Classe 2 (implémentation de l'algorithme) en raison d'une tentative d'accès à une méthode non statique Main() à partir d'une méthode statique GetRandomBits().

Dans la méthode Main(), la ligne Population[i].bits = GetRandomBits(); a provoqué l'erreur. Le problème est que GetRandomBits() est une méthode non statique dans la classe Program, tandis que Main() est une méthode statique.

Solution : statique ou non statique

  • Méthodes non statiques : Doivent être appelées à partir d'une instance (objet) d'une classe.
  • Méthodes statiques : peuvent être appelées directement à partir du nom de la classe sans créer d'instance.

Solution :

  1. Créer une instance : Créez une instance de la classe Program et appelez GetRandomBits() à partir de cette instance.
<code class="language-csharp">// 创建 Program 实例
Program p = new Program();

// 从实例访问非静态方法
Population[i].bits = p.GetRandomBits();</code>
Copier après la connexion
  1. Rendre GetRandomBits() statique : Modifiez la méthode static en méthode statique en ajoutant le mot-clé GetRandomBits() avant la déclaration de la méthode.
<code class="language-csharp">public static string GetRandomBits()
{
    // 在此处实现方法逻辑...
}</code>
Copier après la connexion

La méthode que vous choisissez dépend de la conception de votre programme et de l'objectif de la GetRandomBits() méthode. Si GetRandomBits() doit accéder à d'autres membres non statiques de la classe, il doit utiliser la première méthode (créer une instance). Si GetRandomBits() n'a pas besoin d'accéder aux membres non statiques de la classe, la deuxième approche (la rendre statique) est plus propre. N'oubliez pas que la surutilisation de méthodes statiques peut rendre votre code moins testable et moins maintenable.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal