본문 바로가기

전체 글

(221)
[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바이트 문자인지 판별할 ..
[C#] int.MaxValue 코딩컨벤션에 대한 사소한 의문 안녕하세요, 개발자 윤진입니다. '17년 1월초 러시아에 파견나와 아침을 먹으며 C# 책을 뒤적거리다가 문득 궁금한게 생겼습니다.'int.MaxValue'에 적용된 코딩컨벤션을 보면,'int'는 class 혹은 struct로 보이지만, 첫글자가 소문자인 camelCase가 적용되어 있고,MaxValue는 멤버변수이지만 첫글자가 대문자인 PascalCase가 적용되어 있는데요. 책에서 읽은 바에 따르면, - class & struct는 PascalCase를 따르고,- 멤버변수는 camelCase를 따르게 되어 있습니다. C#으로 된 남의 코드를 읽어본 경험이 전무하기 때문에,책에 명시된 내용과 사뭇 다른 코드를 보니,책에서 제대로 혹은 충분히 설명하지 않았을 것이란 생각이 들었습니다. 그래서, 약간의 검색..
[C#] 코딩컨벤션, linux_kernel_coding_style vs camelCase vs PascalCase 안녕하세요, 개발자 윤진입니다. 코더로서 개발을 막 시작하고 얼마 후-코딩컨벤션으로 개발자들끼리 핏대를 세워가며 언성을 높이는 것을 목격하였습니다.당시에는 '간단한 함수의 경우 헤더에 함수를 정의해도 되는가'라는 주제로 피튀기게 양 진영이 거세게 싸웠는데요,이후에 파일명, 함수명, 변수명의 이른바 '온갖 것에 대한 작명'에 대한 혈투가 개전되어, 모두가 가열차게 답메일을 보내 메일함이 폭발한 적이 있습니다.그리고, 프로그래밍에서는 '작명'이 가장 어렵다는 결론을 내리며 훈훈하게 마무리되었죠.'작명'이 가장 어렵다는 결론은 아직까지 유효합니다. :)함수나 변수의 역할을 그 이름만으로 정확하게 파악할 수 있게 만드는 것은 프로그래밍의 영역이라기 보다는 예술의 영역에 가깝습니다.그리고 이 영역에서 프로그래머의..