c# is 연산자로 비주얼 컨트롤 검색하기

아래 예제는 폼에 있는 비주얼 컨트롤들 가운데 TextBox들만 처리하는 거다.

for (int i = 0; i < Controls.Count; i++)
{
    if (Controls[i] is TextBox)
    {
        Controls[i].Text = "abcde";
    }
}

is는 형 변환을 할 수 있는지 확인하는 연산자다. Controls는 Control의 컬렉션이다. 즉 Control을 TextBox로 타입캐스트할 수 있느냐를 묻는 거다. 아래의 코드는 오류로 처리된다.

if (Controls[i] == TextBox)

Controls에 담겨 있는 건 인스턴스이고 TextBox는 클래스 자체이기 때문이다. 이렇게는 가능하다.

if (Controls[i].GetType() == typeof(TextBox))