본문 바로가기

분류 전체보기

(223)
[C#] 늘 헛갈리 Modal vs Modeless 안녕하세요, 모스크바에서 생활하고 있는 개발자 윤진입니다.벌써 2월이 넘었네요.이제 3월이면 한국으로 귀국합니다. 우훗. 윈도우 프로그래밍을 하려고 이곳저곳 기웃거리며 귀동냥을 하다가,Modal과 Modeless의 작명 이유에 대해 쓰여진 글을 발견하였습니다.예전부터 왜 저런식으로 작명했는지 궁금했었는데 오늘에서야 드디어 답을 얻었습니다. With a modal dialog, you set your application in a particular mode (a different "state" if you will), whereby only actions pertaining to that "mode" are accepted, hence preventing UI actions outside of the d..
[C#] 소수점이 있는 숫자는 float일까 double일까. 안녕하세요,이번에는 아주 간단한 사실 하나만 확인하고 넘어가겠습니다. 소수점이 있는 숫자 뒤에 'f'(float0나 'd'(double)를 붙이지 않으면,해당 숫자는 어떤 타입이 될까요?정답은 C나 C++과 마찬가지로 double 타입입니다. class Program { static void Main(string[] args) { Console.WriteLine((3.14).GetType()); } } 위의 코드를 실행하면,"System.Double"이라는 결과가 나옵니다. 그렇다면, float 변수에 아무 suffix가 없는 숫자를 넘기면 어떻게 될까요? class Program { static void Main(string[] args) { float f = 3.14; Console.WriteLine..
[C#] readonly 변수를 사용하는 이유는? 안녕하세요,모스크바에서 개발과 담을 쌓고 살고 있는 개발자 윤진입니다. C#에는 readonly라는 직설적인 이름의 키워드가 있습니다.변수를 상수로 만들어버려, 변수값을 바꿀 수 없게 만드는 const와 유사해보이기도 하는데요. readonly는 const와는 다르게 compile 시점에 값을 확정하지 않습니다.반면, const는 소스코드에 명시된 변수값을 compile 시점에 확정하지요. readonly는 프로그램이 메모리에 올라가는 runtime 시점에 이르러서야 값을 확정할 수 있습니다.다음 두 경우에만 변수를 초기화할 수 있고 이후에는 갱신할 수 없습니다. 1) 변수를 선언하는 경우2) 생성자 안에서 변수값을 바꾸는 경우 기기가 부팅하면서부터 함께 초기화되는 풀 스크린 UI 앱의 경우,디스플레이의..
[C#] 왜 partial class를 사용하는걸까요? 안녕하세요,러시아에서 생활하고 있는 개발자 윤진입니다. C#에는 정말 흥미로운 기능들이 많이 있더군요.한국에서 공수해온 C# 책에서는 기능에 대한 단편적인 설명만 있어서,해당 기능에 대한 존재의미(레종데트르)를 고민하게끔 만들어주는데요. 이번에는 partial class에 대해 간단히 탐구해보도록 하겠습니다.partial class는 class를 정의할때 한군데가 아닌,복수의 장소에서 class를 정의할 수 있도록 지원하고 있습니다. partial class Korea { public int south; } partial class Korea { protected int north; } - Code Generator 자동생성윈도우 폼을 생성할 때,Code generator는 partial class를 F..
[C#] char[]를 string으로 변환하기 안녕하세요,밤마다 이어지는 모스크바의 눈발 때문에-퇴근길이 험난하기만한 개발자 윤진입니다. C#의 문자열을 살펴보다가 의문이 들어 포스팅을 시작하려 합니다. :) C에서 포인터로 들어간 문자열(문자들 + '\0')을 관리하였습니다만, char *s = "string"; C#에는 포인터 대신 string class로 문자열을 관리하고 있습니다. string s = "string"; 이 사실을 접하자마자 처음 든 의문은,C#에서 char[]을 string처럼 사용할 수 있는지 여부였습니다. char[]와 string은 모두 다수의 문자를 저장할 수 있지만,char는 struct, string은 class인 만큼 둘 사이에 간극은 큽니다.그렇기 때문에 char[]는 string이라고 말할 수 없고,char[]..
[C#] bool.Parser vs Convert.ToBoolean() 안녕하세요,러시아 모스크바에서 생활하고 있는 개발자 윤진입니다.영하 24도로 시작하는 상쾌한 아침이라 외출하기가 너무 겁나네요.그래서 이렇게 두문불출하고 있습니다. 우훗. 이번에는 모든 프로그래밍 언어의 기본이라 할 수 있는 자료형변환에 대해 살짝 살펴보겠습니다.C언어에서는 0, 1 값을 false, true로 매핑하여 사용했는데요,(물론, stdbool.h를 불러와서 사용할 수도 있었죠.)C#에도 아래 코드처럼 int를 boolean으로 바꿀 수 있지 않을까 기대했었죠. Console.WriteLine(Boolean.Parse(1)); 하지만, 위의 코드는 동작하지 않더군요. :) C#에서는 boolean structure를 사용해서 false, true 값을 지정할 수 있습니다.[Serializabl..
[C#] Unicode에서 한글 초성/중성/종성에 대한 짧은 고찰 안녕하세요, 러시아에서 아주 가끔 코딩을 하는 개발자 윤진입니다. 유니코드를 뒤적뒤적 살펴보다가, 유니코드에 한글이 어떻게 매핑되어 있는지 궁금해졌습니다. 유니코드에 매핑된 문자를 확인하고 싶으면 유니코드 공식홈페이지를 찾으면 됩니다. 공식 홈페이지에 올라와있는 Unicode 9.0 Character Code Charts에는, 한글 자소와 완성형 한글이 45장에 걸쳐 빽빽하게 기록된 것을 볼 수 있습니다. 한글자소는 초성/중성/종성으로 나눠져 세 그룹으로 표현되어 있습니다. 현대 한글에서 사용하는 초성은, 'ㄱㄲㄴㄷㄸㄹㅁㅂㅃㅅㅆㅇㅈㅉㅊㅋㅌㅍㅎ'로 총 19자입니다. 그렇지만, 한글자소 테이블에는 위의 한글 외에도 기이한 형태의 자음이 복합된 초성이 포함되어 있습니다. 'ㅎ'에 이어서 'ㄴㄱ'이나 'ㄴㄴ',..
[C#] UTF-16의 캐릭터 크기에 대한 간단한 탐구 안녕하세요,러시아에 살고 있는 개발자 윤진입니다. C#을 비롯한 .Net 플랫폼에서는 문자를 인코딩하는 방식으로,Unicode Transformation Format인 UTF-16을 사용합니다. UTF-16은 기본적으로 16비트-2바이트를 취하지만, 항상 2바이트는 아닙니다.사상되는 문자의 종류에 따라 4바이트로 확장되기도 합니다. 2바이트로 표현되는 영역은 U+0000부터 U+FFFF까지입니다.U+0000은 제어 문자와 라틴 기본 영역에 속해있죠.U+0000 ~ U+007F128자제어 문자와 라틴 기본 U+FFFF는 특수 제어 문자 영역에 속해있습니다.U+FFF0 ~ U+FFFF16자특수 제어 문자 그렇다면, 4바이트 사상되는 U+000000~ 코드 이상의 문자는 무엇을 보고 4바이트 문자인지 판별할 ..