본문 바로가기

C#

(10)
[C#] 필드 사용가능? - interface, abstract class, partial class, virtual method 안녕하세요, 모스크바에 살고 있는 개발자 윤진입니다. C로 개발을 할때는 헤더파일에 온갖 함수선언을 하며,공동작업을 하는 개발자들끼리 전체적인 그림을 그리곤 했습니다.그럴때마다 Java의 interface 기능이 무척이나 부러웠죠. :) C#에서는 다양한 방법으로 모듈을 설계&구현할 수 있습니다.- interface- abstract class- partial class- virtual method 그렇지만, 각각이 목적과 쓰임이 다릅니다.interface는 1) 메소드, 2) 속성, 3) 인덱서, 4) 이벤트 만을 사전에 선언하여,해당 interface를 상속받는 class가 빈 껍데기를 구현하도록 유도하고 있습니다.만약 아래 코드처럼 interface에 필드를 넣으면, 컴파일 에러가 발생합니다.컴파일..
[C#] 속성에 대한 간단한 테스트 안녕하세요, 요즘 도통 개발을 하지 않는 개발자 윤진입니다. C#의 속성과 관련된 부분을 보다가 간단히 코드로 확인하고 싶은 바가 있어 남깁니다. namespace ConsoleApplication2 { class Program { class Man { private int age; public string Name { get; set; } public int Age { get { return age; } set { if (value > 10) age = 10; } } } static void Main(string[] args) { Man man = new Man(); man.Name = "Jin"; man.Age = 2; Console.WriteLine(man.Name + " : " + man.Age)..
[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..