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
Solution :
Program
et appelez GetRandomBits()
à partir de cette instance. <code class="language-csharp">// 创建 Program 实例 Program p = new Program(); // 从实例访问非静态方法 Population[i].bits = p.GetRandomBits();</code>
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>
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!