본문 바로가기

.NET

(42)
[C#] 문자열 04 - IsNullOrEmpty(), IsNullOrWhiteSpace() 문자열 판별하기 반드시 필요한 메서드는 아니지만 string 클래스에서는 비교적 코드를 깔끔하게 작성할 수 있도록 몇 가지 종류의 판별 메서드를 제공한다. 1. bool string.IsNullOrEmpty(string) 지정된 문자열이 null이거나 빈 문자열(길이가 0)인 경우 true를, 그렇지 않은 경우 false를 반환한다. void button_Click( object sender, EventArgs e ) { if ( !string.IsNullOrEmpty( textBox1.Text ) ) { MessageBox.Show( textBox1.Text ); } else { MessageBox.Show( "Empty." ); } } // Decompiled String.cs public static bool Is..
[WinForm] Drag & Drop으로 컨트롤과 컨트롤 간에 개체 옮기기 WinForm에서 Drag & Drop으로 파일 끌어다 놓기에 대한 포스팅을 한 적이 있다. [.NET Framework/WinForm] - [WinForm] Drag & Drop으로 파일 가져오기 [WinForm] Drag & Drop으로 파일 가져오기 파일을 마우스로 끌어서 WinForm의 RichTextBox 컨트롤에 가져다 놓으면 파일을 읽어서 내용을 RichTextBox에 출력해주는 프로그램을 만들어본다. 기본적으로 WinForm의 컨트롤은 Drag&Drop에 대한 처리가 구 cs-solution.tistory.com 이번에는 파일 뿐만 아니라 원하는 형식을 지정해서 값을 옮겨다 놓는 방법에 대해 소개하려고 한다. 먼저 WinForm에서 컨트롤과 컨트롤 간의 Drag & Drop은 ItemDra..
[WPF] MVVM 디자인 패턴 (2) 지난 포스트에서 첨부했던 코드를 분석해보자. MVVM 디자인 패턴의 세 가지 핵심 요소를 중점으로 보려고 한다. 1. Binding Binding은 MVVM의 시작이면서 끝이라고 볼 수 있는 가장 중요한 요소이다. 앞서 사용자에게 보여지는 영역인 View와 데이터의 처리 영역인 ViewModel의 관계에 있어 View는 ViewModel을 알지만 ViewModel은 View를 모른다고 설명하였다. 그렇다면 ViewModel에서 이뤄지는 데이터 처리의 결과를 어떻게 View에 나타낼 수 있을까? WPF는 Binding이라는 기술을 통해 View의 요소(컨트롤)와 ViewModel의 속성을 연결하여 데이터를 마치 동기화되듯이 주고받는 기능을 제공한다. 이를 통해 View는 ViewModel의 속성에 별도의 ..
[WPF] MVVM 디자인 패턴 (1) MVVM 디자인 패턴에 대해 알아보자. WPF & .NET Framework로 개발한다는 가정하에 설명하려고 한다. MVVM은 Model-View-ViewModel의 약자로 애플리케이션을 구성하는 요소를 모델, 뷰, 뷰 모델의 세 가지 계층으로 분리하여 각 계층 간의 결합도와 상호 의존성을 낮춤으로 분리 개발 및 유지보수에 용이하도록 하기 위한 디자인 패턴이다. 각 계층의 역할에 대한 어려운 설명은 인터넷에 검색하면 많이 나오니 참고하자. 이 글에서는 어려운 용어는 집어치우고 "그래서 각 계층을 도대체 어떻게 나누라는 건데?" 에 대해 생각해보려고 한다. MVVM 디자인 패턴으로 개발을 할 때에 딱 1가지만 기억하자. 뷰는 뷰 모델을 알지만 뷰 모델은 뷰를 알지 못하고, 뷰 모델은 모델을 알지만 모델은 ..
[C# Reflection] 런타임에 객체 생성하기 코드상에서는 단순히 MyClass obj = new MyClass()처럼 클래스의 객체를 생성할 수 있다. 런타임에서 어떤 클래스의 객체를 생성하고 싶을 땐 어떻게 해야 할까? 방법 1. Activator.CreateInstance() 인스턴스화 하고자 하는 클래스의 생성자 정보를 정확히 알고 있을 때 쓸 수 있는 방법이다. 제일 간단하다. class MyClass { public MyClass() {} public MyClass(int i) {} } static void Main(string[] args) { var obj = Activator.CreateInstance(typeof(MyClass), 1); } Activator.CreateInstance(Type, params object[]) 메서드..
[C#] 문자열 03 - Trim(), TrimStart(), TrimEnd() 문자열의 시작 또는 끝에서 지정된 문자들을 모두 제거하는 메서드이다. Function Description string Trim(params char[] trimChars) 문자열의 선행과 후행에서 등장하는 지정된 문자 배열의 요소들을 모두 제거한다. string TrimStart(params char[] trimChars) 문자열의 선행에서 등장하는 지정된 문자 배열의 요소들을 모두 제거한다. string TrimEnd(params char[] trimChars) 문자열의 후행에서 등장하는 지정된 문자 배열의 요소들을 모두 제거한다. 세 함수 모두 params 형식의 매개변수를 취하고 있으며, 만약 매개변수가 지정되지 않거나(=null) 빈 배열인 경우 공백 문자를 대신 제거한다. var str = "..
[C#] 문자열 02 - Substring()으로 부분 문자열 가져오기 String.Substring()은 문자열에서 부분 문자열을 가져오는 메서드이다. 1. String.Substring(int startIndex) 문자열의 startIndex 위치부터 문자열의 마지막까지를 새로운 문자열로 생성하여 반환한다. var result = "This is example string.".Substring(6); Console.WriteLine(result);// Output : s is example string. 2. String.Substring(int startIndex, int length) 문자열의 startIndex 위치부터 length 만큼의 문자들을 새로운 문자열로 생성하여 반환한다. var result = "This is example string.".Substri..
[C#] 문자열 01 - Split()으로 문자열 분할하기 string 클래스의 멤버 메서드인 Split()은 특정 문자를 기준으로 문자열을 분할해준다. Split()의 인자로 분할의 기준이 될 문자 혹은 문자열을 Separator(분리 기호)로 지정할 수 있다. 메서드의 결과물은 string[]으로, 분리 기호를 기준으로 분할된 부분 문자열들이 포함된 배열이다. 사용 예1 var result1 = "apple.banana,tomato".Split('.', ','); // result1 = ["apple", "banana", "tomato"] var result2 = "apple.banana,tomato".Split('.'); // result2 = ["apple", "banana,tomato"] var result3 = "apple.banana.tomato"...
[C#] try~catch~finally 구문 사용법 try~catch~finally 구문은 예외를 처리하기 위해 사용하는 구문이며 try~, catch~, finally~의 총 세 개의 절로 구성된다. 단, finally 절은 선택 사항이므로 반드시 사용해야 하는 것은 아니다. 1. try 절 try라는 단어에서 알 수 있듯이, 이 구문은 try { }로 감싸진 블록 내의 코드를 수행하려고 시도한다. 만약 블록 내의 코드를 수행하는 도중 예외가 발생할 경우 코드의 처리를 중단하고, 발생한 예외를 가지고 catch 절로 이동한다. 2. catch 절 catch 절은 예외를 받는 역할을 한다. try { double d = a / b; } catch { Console.WriteLine("error!"); } 만약 위 코드의 try 절에서 b가 0인 경우 Di..
[C#] ref 형식 파라미터 사용법 ref 형식 파라미터와 짝을 이루는 out 형식 파라미터에 대한 설명은 아래 글 참고. [C#] out 형식 파라미터 사용법 메서드에서 두 개 이상의 값을 반환해야 하는 경우는 매우 빈번하다. 하지만 반환형이 void가 아닌 메서드에 대해서 반환 값은 반드시 1개만 존재할 수 있다. 이러한 경우 out 형식 파라미터를 사 cs-solution.tistory.com ref 형식 파라미터는 값 형식 변수를 메서드의 파라미터로 전달하는 경우에도 참조 형식 변수처럼 메서드 내부에서 메서드 외부에 존재하는 실제 변수에 접근하여 값을 변경할 수 있도록 해주는 키워드이다. 쉽게 말해서 C/C++의 포인터이다. 가장 좋은 사용 예는 역시 두 변수의 값을 서로 바꿔주는 Swap 메서드이다. 1. Swap 메서드를 C++..