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
Libérer: 2025-01-22 05:31:09
original
218 Les gens l'ont consulté

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>
Copier après la connexion

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>
Copier après la connexion

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>
Copier après la connexion

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!

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
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal