Примечание
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Ссылка на объект требуется для нестаттического поля, метода или свойства "member"
Чтобы использовать нестатическое поле, метод или свойство, сначала необходимо создать экземпляр объекта. Дополнительные сведения о статических методах см. в статье Статические классы и члены статических классов. Дополнительные сведения о создании экземпляров классов см. в разделе Конструкторы экземпляров.
Пример 1
В следующем примере возникает ошибка CS0120:
// CS0120_1.cs
public class MyClass
{
// Non-static field.
public int i;
// Non-static method.
public void Method() { }
// Non-static property.
public int Prop
{
get
{
return 1;
}
}
public static void Main()
{
i = 10; // CS0120
Method(); // CS0120
int p = Prop; // CS0120
}
}
Чтобы исправить эту ошибку, сначала создайте экземпляр класса:
// CS0120_1.cs
public class MyClass
{
// Non-static field.
public int i;
// Non-static method.
public void Method() { }
// Non-static property.
public int Prop
{
get
{
return 1;
}
}
public static void Main()
{
var mc = new MyClass();
mc.i = 10;
mc.Method();
int p = mc.Prop;
}
}
Пример 2
Кроме того, ошибка CS0120 будет возникать при вызове нестатического метода из статического, как показано ниже:
// CS0120_2.cs
public class MyClass
{
public void Method() { }
public static void Main()
{
Method(); // CS0120
}
}
Чтобы исправить эту ошибку, сначала создайте экземпляр класса:
// CS0120_2.cs
public class MyClass
{
public void Method() { }
public static void Main()
{
var mc = new MyClass();
mc.Method();
}
}
Пример 3
Аналогичным образом, статический метод не может вызывать метод экземпляра, если ему не предоставлен явно экземпляр класса, как показано ниже:
// CS0120_3.cs
using System;
public class MyClass
{
public static void Main()
{
DoIt("Hello There"); // CS0120
}
private void DoIt(string sText)
{
Console.WriteLine(sText);
}
}
Чтобы исправить эту ошибку, можно также добавить ключевое слово static в определение метода:
// CS0120_3.cs
using System;
public class MyClass
{
public static void Main()
{
DoIt("Hello There");
}
private static void DoIt(string sText)
{
Console.WriteLine(sText);
}
}