Share via


컴파일러 오류 CS0120

업데이트: 2007년 11월

오류 메시지

비정적 필드, 메서드 또는 속성 'member'에 대한 개체 참조가 필요합니다.
An object reference is required for the nonstatic field, method, or property 'member'

비정적 필드, 메서드 또는 속성을 사용하려면 먼저 개체의 인스턴스를 만들어야 합니다. 정적 메서드에 대한 자세한 내용은 정적 클래스 및 정적 클래스 멤버(C# 프로그래밍 가이드)를 참조하십시오. 클래스의 인스턴스를 만드는 방법에 대한 자세한 내용은 인스턴스 생성자(C# 프로그래밍 가이드)를 참조하십시오.

다음 샘플에서는 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;
   }
}

CS0120은 다음과 같이 정적 메서드에서 비정적 메서드에 대한 호출이 있는 경우에도 생성됩니다.

// 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()
   {
   }
}

마찬가지로 정적 메서드는 다음과 같이 클래스 인스턴스를 명시적으로 제공하지 않으면 인스턴스 메서드를 호출할 수 없습니다.

// 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);
   }
}

참고 항목

참조

클래스 및 구조체(C# 프로그래밍 가이드)