반응형 분류 전체보기552 백준 C# - 11005 +)풀이 풀이 나머지가 9보다 큰 경우와 작은경우를 나누어서 풀면 된다. 01 나머지가 9보다 경우 ASCII값을 사용하여 나머지를 해당 문자로 변환한다. if(n % b > 9) { char a = (char)((n % b) + 55); sb.Insert(0,a); } 02 나머지가 9보다 작은 경우 숫자 그대로 사용하면 된다. else sb.Insert(0,n % b); 03 sb.Inset(0,숫자)를 사용하는 이유 문자열 인덱스0에 해당 숫자를 추가한다는 의미이다. 그러므로 결과를 거꾸로 저장할 수 있다. 예를들어 345를 16진수로 변환한다고 가정해보자 1) 345 % 16 = 21 ... 9 2) 21 % 16 = 1 ... 5 3) 1 % 16 = 0 ... 1 이다. 만약 Insert를 사용하지 않.. 2023. 11. 22. Effective C# - Item10 베이스 클래스가 업그레이드된 경우에만 new 한정자를 사용하라 베이스 클래스에서 virtual로 선언하지 않은 멤버를 재정의하려는 경우 new 한정자를 사용할 수 있다. 하지만 사용할 수 있다는 것은 전혀 다른 이야기이다. 왜냐하면 virutal로 선언되지 않은 메서드를 재정의하면 메서드의 동작 방식을 모호하게 만들 우려가 있기 때문이다. new한정자를 활용해도 좋은 경우는 베이스 클래스에서 이미 사용하고 있는 메서드를 재정의하여 완전히 새로운 베이스 클래스를 만들어야하는 정도이다. 이미 널리 사용되고있는 메서드가 있어서 이를 사용하는 코드를 일일이 찾아서 수정하기 어렵거나 혹은 외부 어셈블리에서 이 메서드를 사용하고 있어서 코드를 수정할 수 없는 경우라면 new한정자를 사용해볼 만하다. 코드 예시 public class BasePiggy { public void .. 2023. 11. 22. Effective C# - Item9 박싱과 언박싱을 최소화하 박싱(Boxing) 값 타입의 객체를 타입이 정해져 있지 않은 임의의 참조 타입 내부에 포함시키는 방법이다. 이를 이용하면 참조 타입이 필요한 경우에도 값 타입을 쓸 수 있다. int intValue = 42; object boxedValue = intValue; // 박싱 언박싱(UnBoxing) 박싱되어 있는 참조 타입의 객체로부터 값 타입 객체의 복사본을 가져오는 방법이다. object boxedValue = 42; int intValue = (int)boxedValue; // 언박싱 박싱 언박싱을 수행하는 과정에서 임시 객체가 생성되기도 하는데 간혹 이로 인해 예상치 못한 버그가 발생하기도 한다. 박싱은 값타입을 참조 타입으로 변경한다. 이 과정에서 새롭게 생성된 참조 타입의 객체는 힙에 생성되며.. 2023. 11. 22. Effective C# - Item 8 이벤트 호출 시에는 null 조건 연산자를 사용하라 이벤트를 호출하는 경우 다양한 문제가 발생할 수 있다. 이벤트를 호출할 때 이벤트 핸들러가 결합되어 있지 않은 경우에 대한 처리는 C# 6.0에서 추가된 null 조건 연산자를 사용하여 간단하게 처리할 수 있다. 이전에는 이벤트 핸들러가 결합되어 있는지 확인하기 위해 직접 null 체크를 하고 호출하는 방식이 많이 사용되었는 이 방식은 두 단계로 이루어져 있기 때문에 경쟁 조건이 발생할 가능성이 있습니다. 코드로 알아보기 01 Null 체크 안하는 경우 public class EventSource { private EventHandler Updated; public void RaiseUpdates() { counter++; Updated(this,counter); } private int counter;.. 2023. 11. 22. Effective C# - Item7 델리게이트를 이용하여 콜백을 표현하라 콜백(Callback) 동기적인 상황에서 어떤 이벤트나 작업의 완료를 알리거나 처리 결과를 전달하는 방식으로 사용된다. C#에서 콜백은 대부분 델리게이트(delegate)를 사용하여 구현된다. 델리게이트는 메서드에 대한 형식 안전한 참조를 제공하며, 비동기적인 상황에서 콜백을 수행하기 위해 이를 활용할 수 있다. 델리게이트(Delegate) C# 문법 - Delegate(대리자) 1. Delegate 형식은 형식인데, 함수 자체를 넘겨주는 그런 형식! callback 형식 함수 자체를 인자로 넘겨주고 함수를 호출한다. 예시) 사장님(Function)의 비서(Delegate)에게 연락을 요청하지만 받지 않아 code-piggy.tistory.com 콜백과 델리게이트는 C#이 제공하는 관용구의 하나이며 람다.. 2023. 11. 22. 컴퓨터 구조 - 명렁어 사이클,인터럽트, 예외,하드웨어 인터럽트, 인터럽트 서비스 루틴 CPU가 하나의 명령어를 처리하는 과정에는 정해진 흐름이 있고 그 흐름을 반복하며 명령어들을 처리해 나간다. 하나의 명령어를 처리하는 정형화된 흐름을 명령어 사이클이라고 한다. CPU는 정해진 흐름에 따라 명령어를 처리해 나가지만 간혹 이 흐름이 끊어지는 상황이 발생한다. 이를 인터럽트라고 한다. 명령어 사이클 프로그램은 수많은 명령어로 이루어져 있고 CPU는 이 명령어들을 하나씩 실행한다. 이때 프로그램 속 각각의 명령어들은 일정한 주기가 반복되며 실행되는데 이 주기를 명령어 사이클(instruction cycle)이라고 한다. 즉 프로그램 속 각각의 명령어들은 명령어 사이클이 반복되며 실행한다. 01 인출 사이클(fetch cycle) 메모리에 있는 명령어를 CPU로 가져오기 02 실행 사이클(exe.. 2023. 11. 22. 이전 1 ··· 35 36 37 38 39 40 41 ··· 92 다음 반응형