비정적 필드, 메서드 또는 속성 ‘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);
}
}
참고 항목
GitHub에서 Microsoft와 공동 작업
이 콘텐츠의 원본은 GitHub에서 찾을 수 있으며, 여기서 문제와 끌어오기 요청을 만들고 검토할 수도 있습니다. 자세한 내용은 참여자 가이드를 참조하세요.
.NET