C#

Visual Studio C# CS0051 오류

기공이 2016. 5. 17. 12:58

Visual Studio를 통해 C#을 하다보면 오류가 뜹니다.


CS0051 오류는 컴파일러 오류입니다.


이는 " 'type' 매개 변수 형식이 'method' 메서드보다 액세스하기 어렵습니다." 의 오류로



메서드에 전달되는 매개변수가 메서드보다 접근 가능 범위가 적을 때 발생합니다.




예를 들어 M이라는 메서드는 A라는 네임스페이스 내부 어디서든 쓸 수 있지만, 


T라는 타입은 A 내부에 있는 B라는 네임스페이스에 정의되어 있을 때 발생합니다.


결국 메서드가 정의된 위치에서는 접근이 가능하지만, 메서드를 호출할 때 매개변수에 


접근이 불가능할 수 있기 때문에 발생하는 것입니다.


다른 예를 코드로 보여드리겠습니다.


public class A
{
    // F가 public이라면 B도 public로 선언해야 합니다.
    // B는 A클래스 내부에서만 접근할 수 있습니다.

class B { } public static void F(B b) // CS0051 { } public static void Main() { } }

출처 : MSDN


위 코드에서는 B가 class A의 private 영역이기 때문에 A의 외부에서는 접근할 수 없습니다.


하지만 F는 public 영역으로 A의 외부에서 접근 가능하기 때문에, CS0051 오류가 발생하게 됩니다.