[c#] 삼항연산자로 조건문 간결하게 하기

삼항연산자 또는 삼항 조건 연산자ternary conditional operator ?:를 이용하면 조건문을 간결하게 할 수 있다. ternary는 ‘세 개를 한 묶음으로 하는 것’이라는 뜻이다. 예를 들면 정수를 담은 리스트가 있다. 아이템들 개수가 열 개 이상이면 앞의 열 개만 2로 바꾸고 열 개 미만이면 모든 아이템들을 2로 바꾼다. 삼항연산자를 써서 아래와 같이 바꿀 수 있다.

c# 액세스 모디파이어를 생략한 경우 처리되는 기본 값

access modifier가 마이크로소프트 한글 문서에는 액세스 한정자라고 번역되어 있다. modify는 ‘수정한다’는 뜻 말고도 ‘수식한다’라는 의미도 갖는다. 형용사가 명사를 수식하듯이 대상의 뜻을 분명하게 한다는 뜻이다. 제한자라고 번역하는 건 틀리다. 마이크로소프트 문서에는 ‘특정한다specify‘고 기술되어 있다. 구글로 검색해 보면 그냥 액세스 모디파이어라고 하는 게 제일 많이 쓰인다. 액세스 모디파이어는 생략할 수 있다. 클래스의 멤버들인 경우에는 생략하면 private로 처리된다….

c# 캐릭터 배열 char[]를 아규먼트로 넘길 때 주의할 점

String.ToCharArray는 인스턴스를 만든다. 아래의 코드에서 캐릭터 배열은 초기화되지 않았지만 제대로 실행된다. 캐릭터 배열은 레퍼런스 타입이므로 이걸 아규먼트로 받은 메서드에서 그 값을 수정하면 호출한 메서드에도 반영된다. String.ToCharArray를 이용하면 chars는 새로운 인스턴스를 갖게 되므로 호출한 메서드에는 반영되지 않아서 널 문자 다섯 개만 출력된다.

c# 클래스의 필드를 public으로 만들어 써도 되는 경우

클래스 안에 만들어지는 프라퍼티와 필드는 데이터를 저장하는 데에 있어서는 기능하는 게 비슷하다. 이들 사이에서 어떤 걸 써야 하나 애매하다. 필드에 접근하려면 public으로 만들어야 한다. 마이크로소프트는 필드를 퍼블릭으로 만들지 말라고 한다. 필드를 퍼블릭으로 만들지 않으면 필드에 직접 접근할 수 없다. 프라퍼티를 만들어서 거쳐야 한다. 복잡하다. 프라퍼티만 만들어서도 필드를 대체할 수 있다. 뒤에 { get; set; }를…

c# 널러블 변수를 이해하고 cs8604 경고를 없애는 방법

ComboBox.ObjectCollection.Add()는 널을 아규먼트로 받을 수 없다. 이 메서드에 널을 넣으면 애플리케이션이 멈춘다. 아래의 코드에서 method1에 널 아닌 값이 가더라도 컴파일러는 cs8604 경고를 보낸다. 의도하지 않은 상황에 널이 전달되어 애플리케이션이 멈추는 것을 막으려는 거다. 변수 오른쪽에 ?를 붙이면 널도 값으로 가질 수 있는 변수가 된다. 이걸 nullable variable이라 한다. 위 예제에서는 cs8604 상황을 일부러 만들기 위해서…

윈도우즈 메시지를 제어하는 WndProc SendMessage PostMessage

윈도우즈는 message를 통해 애플리케이션, 컨트롤과 통신한다. 여기에서 메시지는 MessageBox를 통해 출력되는 문자열을 말하는 게 아니고 구조체다. 윈도우즈가 보내는 메시지를 제어하려면 WndProc 메소드를 이용한다. WndProc으로 윈도우즈가 보내는 많은 메시지들 가운데 원하는 것만 골라낼 수 있다. 윈도우즈로 메시지를 보내서 윈도우즈로 하여금 무언가를 실행하게 하려면 SendMessage나 PostMessage 함수를 쓴다. 이것들은 win32 api에 있는데 이 api는 윈도우즈를 설치할 때…

‘예전에 저지른’ 이라는 뜻의 historical

옥스퍼드 영한사전에서 historical을 찾아보면 ‘역사적’ 따위의 뜻들만 나온다. 하지만 ‘예전에 저지른’이라는 의미로도 쓰인다. 이는 단지 ‘과거의’나 ‘오래된’과는 느낌이 조금 다르다. Northern Ireland’s finely balanced power-sharing arrangements were thrown into disarray Friday as the leader of the region’s largest unionist party stepped down after being charged with historical sexual offenses.– the wall street journal 2024. 3….