접근 제한자에는 public, protected, internal, private가 있다. 클래스 기본형은 internal이다.
접근 제한자 |
설명 |
private |
클래스 내부에서만 접근이 가능하다. |
public |
모든 곳에서 해당 멤버로 접근이 가능하다. |
internal |
같은 어셈블리에서만 public으로 접근이 가능하다. |
protected |
클래스 외부에서 접근할 수 없으나 파생 클래스에서는 접근이 가능하다. |
protected internal |
같은 어셈블리에서만 protected으로 접근이 가능하다. |
using System;
using System.Collections.Generic;
using System.Runtime.InteropServices;
namespace ConsoleApplication1
{
// internal 클래스
class A
{
protected int x = 123;
public float val = 10;
}
class B : A
{
public void Test()
{
A a = new A();
B b = new B();
// 에러 CS1540 발생 protected
a.x = 10;
// 접근 가능
b.x = 10;
b.val = 20;
}
}
public class Test
{
static void Main()
{
A a = new A();
a.val = 20;
}
}
}