Maison >développement back-end >C++ >Pourquoi C# renvoie-t-il « Une référence d'objet est requise pour le champ, la méthode ou la propriété non statique » ?

Pourquoi C# renvoie-t-il « Une référence d'objet est requise pour le champ, la méthode ou la propriété non statique » ?

Linda Hamilton
Linda Hamiltonoriginal
2025-01-22 05:31:09295parcourir

Why Does C# Throw

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

En C#, l'erreur « Une référence d'objet est requise pour accéder à un champ, une méthode ou une propriété non statique » se produit généralement lorsqu'une méthode statique tente d'accéder à un membre non statique de la classe.

L'erreur dans cet article se produit dans la ligne de code suivante dans la méthode Main :

<code class="language-c#">Population[i].bits = GetRandomBits();</code>

Le problème vient de la méthode GetRandomBits, qui est déclarée comme méthode non statique dans la classe Program. Cependant, la méthode Main est définie comme une méthode statique, ce qui signifie qu'elle ne peut accéder qu'aux membres statiques de la classe.

Solution

Il existe deux manières de résoudre cette erreur :

1. Créez une instance de la classe :

Les méthodes statiques ne peuvent pas accéder directement aux membres non statiques. Pour accéder à une méthode ou une propriété non statique à partir d'une méthode statique, vous créez d'abord une instance de la classe, puis appelez la méthode ou accédez à la propriété via cette instance. Par exemple :

<code class="language-c#">// 创建 Program 类的实例
Program p = new Program();

// 通过实例调用 GetRandomBits 方法
Population[i].bits = p.GetRandomBits();</code>

2. Rendre la méthode statique :

Alternativement, vous pouvez en faire une méthode statique en ajoutant le mot-clé Program lors de la déclaration de la méthode GetRandomBits dans la classe static. De cette façon, les méthodes Main statiques peuvent accéder directement à la méthode GetRandomBits sans créer d'instance. Par exemple :

<code class="language-c#">public static string GetRandomBits()
{
    // 方法实现
}</code>

Avec l'une ou l'autre des méthodes ci-dessus, vous pouvez éliminer l'erreur et faire en sorte que la méthode Main accède correctement à la méthode GetRandomBits.

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!

Déclaration:
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