전체 글 (45) 썸네일형 리스트형 [C#] delegate와 delegate 체인 delegate(델리게이트)는 C++의 함수 포인터와 비슷한 기능을 하는 C#의 기능으로, '대리자'라는 의미처럼 메서드를 대신 호출해주는 기능을 한다. 메서드를 대신 호출해주는 기능이 왜 필요할까? 사실 알게 모르게 여기저기에서 우리는 delegate를 사용하고 있다. 가장 대표적인 곳이 WinForm에서 이벤트 처리기이다. 이는 WinForm 애플리케이션이 동작하는 중에 이벤트가 발생하는 각 포인트에서 적절한 대리자를 사용하여 대리자에 등록된 메서드를 호출해주는 것을 의미하며, 각 이벤트에 대한 세부적인 처리를 정의하는 것은 공백으로 남겨두어 WinForm 개발자들이 자유롭게 사용할 수 있도록 한다. 가령 TextBox와 같은 컨트롤들은 키가 입력됨을 판단하여 적절한 위치에서 KeyDown, KeyP.. [C#] 소켓 연결 시도에 타임아웃 넣기 Socket의 Connect() 메서드는 네트워크 연결을 시도하는 메서드이다. 만약 연결을 요청했을 때 연결이 되거나, 연결이 거부되거나 처럼 응답이 오면 빠르게 넘어갈 수 있으나, 문제는 응답이 없는 경우이다. 응답이 없는 경우 10초 내지 20초의 꽤 긴 시간 동안 응답을 기다리다가 처리가 넘어가게 된다. 연결을 요청하는 측에서도 타임아웃을 두고 지정된 시간동안만 대기하는 코드를 소개한다. public bool ConnectWithTimeout(Socket socket, string ip, int port, int timeOutSec) { var waiter = socket.BeginConnect(new IPEndPoint(IPAddress.Parse(ip), port), null, null); //.. [C#] as, is 키워드 사용법 형식을 변환하기 위해 캐스트 연산자를 사용한다. double pi = 3.14; int p = (int)pi;// double 타입 값 3.14를 int 타입으로 캐스팅 이런 식으로 값을 다른 형식으로 변환하거나, enum FruitType { Apple, Banana, Grape, Orange, Pineapple, Mango } static void Main(string[] args) { int i = (int)FruitType.Apple; FruitType f = (FruitType)2; } 이런 식으로 열거형에도 사용할 수 있고, private void button_Click(object sender, EventArgs e) { MessageBox.Show(((Button)sender).Text +.. [C#] 문자열 보간 기능 C#에서 문자열을 사용하다 보면 아래와 같이 코드가 굉장히 지저분해지고 가독성도 떨어지는 경우가 꽤 있다. // [학번] 이름 (나이) 주소 : 주소 형식으로 문자열을 생성해서 반환한다. // ex) [00000001] 홍길동 (21) 주소 : 서울특별시 서초구 string makeString(string studentNumber, string name, int age, string address) { return "[" + studentNumber + "] " + name + " (" + age + ") 주소 : " + address; } 문자열과 데이터가 섞여야 하는 경우 문자열 보간 기능을 이용하면 아주 깔끔하게 코드를 작성할 수 있다. // [학번] 이름 (나이) 주소 : 주소 형식으로 문자열을 .. [WinForm] 텍스트박스 입력 무시/숫자만 입력 가능하도록 하기 텍스트박스는 일반적으로 포커스가 컨트롤에 있고 키보드 입력이 발생하면 일단 문자가 삽입된다. 텍스트박스에 입력을 불가능하게 하거나, 특정 문자만 입력을 허용하도록 하는 방법을 소개한다. 우선, 이러한 동작을 가능토록 하려면 KeyPress 이벤트를 사용해야 한다. KeyPress 이벤트는 KeyPressEventArgs 매개변수를 갖는데, 이 매개변수의 Handled 속성을 사용하여 입력 값을 제어할 수 있다. Key Event의 발생 순서는 KeyDown -> KeyPress -> 컨트롤 처리 -> KeyUp 순서로 진행되는데, 만약 KeyPress 이벤트에서 Handled를 true로 변경한다면 컨트롤 처리 부분은 진행되지 않는다. 여기서 컨트롤 처리는 컨트롤에 입력된 문자를 삽입하는 과정을 포함하고.. 이전 1 ··· 5 6 7 8 9 다음