반응형 전체 글553 Effective C# - Item23 타입 매개변수에 대해 메서드 제약 조건을 설정하려면 델리게이트를 활용하라 C#에서 제약 조건은 일정한 범위 내에서 사용 가능하며 기본적으로 클래스의 상속, 인터페이스 구현, 생성자 제약 등의 형태로 제한이 이루어진다. 몇 가지 경우에는 런타임에 제약 조건을 체크할 수 있는 기능이 제공되지 않기 때문에 컴파일 타임에만 확인할 수 있는 제약을 설정하는 것이 어려울 수 있다. 01 베이스 클래스의 타입이나 특정 인터페이스로 제약 조건 예를 들어, 특정 인터페이스를 구현하도록 하는 것은 가능하지만 인터페이스의 메서드 시그니처를 강제하거나 특정한 static 메서드를 반드시 구현하도록 하는 것은 어렵다. 02 class 타입이나 struct 타입으로 형태 제한 클래스 또는 구조체로 제한하는 것은 가능하지만 특정 메서드나 생성자의 존재를 강제하는 것은 기본 제약 조건에 포함되지 않다. .. 2023. 12. 15. C# 문법 - 인스턴스 생성을 위한 new 키워드 new 키워드로 인스턴스를 생성하면 해당 인스턴스는 힙메모리에 할당되며 생성된 인스턴스에 대한 참조를 반환한다. 이렇게 생성된 인스턴스는 명시적으로 메모리에 제거되지 않는 한 사용가능하다. 사용 예시 01 객체 인스턴스 생성 클래스 또는 구조체등의 타입으로부터 객체의 인스턴스를 생성한다. class Piggy { public string name {get;set} } Piggy pig = new Piggy(); 02 배열 인스턴스 생성 int[] weights = new int[3]; 03 제네릭 타입 인스턴스 생성 List weights = new List(); 04 새로운 문자열 생성 문자열은 변경할 수 없는(immutable)이기 때문에 복사본을 새로 만들어 수정하는 경우에 사용된다. char ch.. 2023. 12. 14. C# - 파라미터 전달방식(ref, out, in 키워드), Pass by Value(값에 의한 전달) 및 Pass by Reference(참조에 의한 전달) 1. Pass by Value(값에 의한 전달)파라미터 "값"을 복사해서 파라미터 값 자체를 복사해서 전달하는 방식이다. 만약 몰래 소주를 마셔서 이를 물로 채워넣는다는 예시로 코드를 작성해보자class change{ public void changeToWater(int leftsoju) { int water = 100; leftsoju = water; }}public static void Main(){ int leftvalue = 0; // 소주를 다 마신 상태 chang Change = new chang(); Change.changeToWater(leftvalue) // 마신 소주에 물 넣기 Console.WriteLine(leftsoj.. 2023. 12. 14. Effective C# - Item 22 공변성과 반공변성을 지원하라 타입의 가변성(Variance)은 특정 타입의 객체를 다른 타입의 객체로 변환할 수 있는 성격을 나타낸다. 이 가변성은 크게 공변성(Convariance)과 반공변성(Contravariance)으로 나눌 수 있다. 공변성 (Convariance) X를 Y로 바꾸어 사용할 수 있는 경우 C를 C로도 바꾸어 사용할 수 있다면 C는 공변이다. string[] str = new string[10]; object[] obj = str; 공변성은 배열과 같은 특정 컬렉션 형식에서 파생 타입을 기본 타입으로 사용하는 것을 허용한다 . 위의 예제처럼 string[]은 object[]의 파생타입이므로 string[]을 object[]로 할당할 수 있다. 반공변성(Contravariance) Y를 X로 바꾸어 사용할 수 .. 2023. 12. 14. 백준 C# - 2667 +) 풀이 이 문제를 풀기 앞서 아래 문제를 풀고 오는 것을 추천한다. 2667이 아래 문제의 심화버전이다. 백준 C# - 1012 백준 C# - 1012 +) 풀이 먼저 문제 이해부터 해보자 문제에서 배추 흰지렁이가 한 배추의 상하좌우로 다른 배추로 이동할 수 있다고 나와있다. 1) DFS를 이용해서 상하좌우로 이동할 수 있을때까지 이동하면서 확인해야 code-piggy.tistory.com 백준 C# - 1012를 풀었다는 전제하에 문제 풀이를 진행하겠다. 출력에 필요한 두 부분 01 총 그룹의 갯수 출력(1012 : 지렁이의 갯수) 이 부분은 원래 1012와 동일하게 출력하면 된다. 02 단지내 집의 수 오름차순으로 출력(1012 : 각 지렁이에 해당되는 배추들의 수) 각 단지내 집의 수는 DFS가 호출되는 .. 2023. 12. 14. 백준 C# - 1012 +) 풀이 먼저 문제 이해부터 해보자 문제에서 배추 흰지렁이가 한 배추의 상하좌우로 다른 배추로 이동할 수 있다고 나와있다. 1) DFS를 이용해서 상하좌우로 이동할 수 있을때까지 이동하면서 확인해야 한다. 2) 그 그룹의 끝에 다다랐으면 다음으로 배추가 심어진 곳을 찾아 배추가 심어진 곳이 없을때까지 이를 반복하면 된다. 상하좌우 탐색에서 -값이 나오는 경우를 먼저 살펴보자 1 5 3 6 0 2 1 2 2 2 3 2 4 2 4 0 문제를 표로 나타내면 아래와 이미지와 같다. 상하좌우 탐색 static int[] dirX = { 1, -1, 0, 0 }; static int[] dirY = { 0, 0, 1, -1 }; 만약 x가 0이고 y가 4인 경우 for (int i = 0; i < 4; i++) { int .. 2023. 12. 14. 이전 1 ··· 26 27 28 29 30 31 32 ··· 93 다음 반응형