Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
Aggiornamento: novembre 2007
Messaggio di errore
Occorre un riferimento a un oggetto per la proprietà, il metodo o il campo non static 'membro'.
An object reference is required for the nonstatic field, method, or property 'member'
Per utilizzare una proprietà, un metodo o un campo non static, è innanzitutto necessario creare un'istanza di oggetto. Per ulteriori informazioni sui metodi statici, vedere Classi statiche e membri di classi statiche (Guida per programmatori C#). Per ulteriori informazioni sulla creazione di istanze di classi, vedere Costruttori di istanze (Guida per programmatori C#).
Il seguente codice di esempio genera l'errore CS0120:
// CS0120_1.cs
public class MyClass
{
// Non-static field
public int i;
// Non-static method
public void f(){}
// Non-static property
int Prop
{
get
{
return 1;
}
}
public static void Main()
{
i = 10; // CS0120
f(); // CS0120
int p = Prop; // CS0120
// try the following lines instead
// MyClass mc = new MyClass();
// mc.i = 10;
// mc.f();
// int p = mc.Prop;
}
}
L'errore CS0120 viene generato anche se un metodo statico effettua una chiamata a un metodo non statico, nel modo seguente:
// CS0120_2.cs
// CS0120 expected
using System;
public class MyClass
{
public static void Main()
{
TestCall(); // CS0120
// To call a non-static method from Main,
// first create an instance of the class.
// Use the following two lines instead:
// MyClass anInstanceofMyClass = new MyClass();
// anInstanceofMyClass.TestCall();
}
public void TestCall()
{
}
}
Analogamente, un metodo statico non può chiamare un metodo di istanza, a meno che non venga fornita esplicitamente un'istanza della classe, nel modo seguente:
// CS0120_3.cs
using System;
public class MyClass
{
public static void Main()
{
do_it("Hello There"); // CS0120
}
private void do_it(string sText)
// You could also add the keyword static to the method definition:
// private static void do_it(string sText)
{
Console.WriteLine(sText);
}
}