190730 - 4 - 클래스 base : 부모 클래스 sealed : 상속 불가능 확장 매서드 using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; using MyExten; namespace MyExten { public static class IntExtension { public static int Square(this int myInt) { return myInt * myInt; } public static int Power(this int myInt, int exponent) { int result = myInt; for (int i = 1; i
190730 - 2 - 흐름제어 C# switch문은 정수형식과 문자열 형식 두 가지를 지원한다. 정수와 문자열 형식 외에도 데이터 형식을 조건으로 사용할 수 있다. (C# 7.0 이상) static void Main(string[] args) { object obj = 123; // boxing switch (obj) { case int i: // 데이터 형식 사용시, 형식 옆에 식별자를 붙여주어야함. (case절 내부에서 사용가능) Console.WriteLine("int:"+i); break; case float f: Console.WriteLine("float:" + f); break; default: break; } } int:123 switch static void Main(string[] a..
190730 - 1 - 연산자 Null 병합 연산자 static void Main(string[] args) { //Console.WriteLine("HELLO C#"); //int a = 12; //object b = (object)a; // boxing //int c = (int)b; //unboxing int? a = null; Console.WriteLine($"{a ?? 0}"); a = 99; Console.WriteLine($"{a ?? 0}"); } 0 99 static void Main(string[] args) { int? num = null; Console.WriteLine($"{num ?? 0}"); num = 99; Console.WriteLine($"{num ?? 0 }"); s..
190729 - 2 - 흐름제어 foreach 사용예시 static void Main(string[] args) { int[] arr = new int[] { 1995,2015,2019,2020 }; foreach (var a in arr.Select((value, index) => new { Value = value, Index = index })) { Console.WriteLine("[{0}]:{1}", a.Index, a.Value); } }
190729 - 1 - 데이터 보관하기2 Decimal 형식은 double 형식보다 정밀도가 높은 형식이다. (숫자 뒤에 m을 붙인다.) C#의 모든 최고 조상은 Object 박싱과 언박싱 : 예시로 Object 형식에 값 형식의 데이터를 할당할 경우 Object형식은 기본적으로 Heap에 메모리가 할당되므로 값 형식을 힙에 할당하기위한 박싱기능을 제공한다. 박싱을 통해 힙에 저장한다. 이후 박싱되어 있는 데이터를 다시 값형식으로 얻어오는 것을 언박싱 이라고한다. static void Main(string[] args) { int a = 123; object b = (object)a; // a의 담긴 값을 박싱해서 힙에 저장 int c = (int)b; // b에 담긴 값을 언박싱해서 스택에 저장 Con..
190726 - 1 - 데이터 보관하기 using System; namespace SignedUnsigned { class MainApp { static void Main(string[] args) { byte a = 255; sbyte b = (sbyte)a; Console.WriteLine(a); Console.WriteLine(b); } } } 255 -1 계속하려면 아무 키나 누르십시오 . . . 2의 보수법을 사용하기 때문에 위와 같이 출력된다.
190725 - 1 - HelloWorld 인터프리터 : 스크립트언어 사용 바로실행 (하지만 코드가 무조건 있어야한다) using System; // System 네임스페이스를 사용하겠다. using static System.Console; // Console 클래스(데이터형식)의 정적 멤버를 데이터형식(클래스)의 이름을 명시하지 않고 참조하겠다. using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace HelloWorld { class HelloWorld { static void Main(string[] args) { if (args.Length == 0) { ..
WPF 실습#5 - DataGrid Binding 이번실습은 실습#4와 거의 동일한 방식의 코딩으로 진행됩니다. UI를 설명하자면 Search부분에서 검색한 타이틀이 바로 밑에있는 DataGrid에 표시되며, 선택하게되면 바로옆 Border영역에 디테일한 정보가 표시됩니다. 또한 디테일영역은 TwoWay로 변경시 내부 데이터도 동일하게 변경 가능합니다. 먼저 재믈(Xaml)코드를 설명하도록하겠습니다. 제가 보라색으로 지정한 영역은 Search영역 즉 검색을 가능하게 해주는 인터페이스영역입니다. 참고로 중요한 부분은 빨간색 밑줄을 쳐 놓았으므로 이부부만 확실히 이해한다면 이번 실습은 끝입니다. 여기서는 해당 텍스트박스의 내용이변하면 발생하는 TextChanged이벤트를 textBox_TextChanged로..
WPF 1주일만에 끝내기 - 실습 #2 NavigationService.Navigate 2번째 실습을 풀이해 보도록 하겠습니다. 이번에는 실습#1에서 만들었던 컨텍트페이지를 메뉴에 연동해서 동작시키도록 하겠습니다. 위와 같이 3개의 메뉴(버튼)가 존재하며 Email Support 버튼을 클릭하게 되면 실습1에서 만들었던 페이지로 이동되게 하면됩니다. 이때 페이지 이동기법은 예시로 인터넷 사이트에서 링크 클릭시 해당 페이지로 이동하는 것과 동일하다고 생각하시면되겠습니다. 일단 메뉴페이지를 추가해서 위와같이 드래그엔 드롭으로 버튼과 텍스트 블록을 추가해주시기바랍니다. 그리고 만얀에 실행한다면 크기가 자동으로 변환되지 않는 문제가 발생합니다. 그래서 위와 같이 코드를 작성해야합니다. Grid는 기본적으로 컨텐..
WPF MVVM 7일만에 배우기 - 실습#1 (page) WPF 일주일만에 끝내버리기 프로젝트.. 실습 넘버원 시작합니다. 위 연습문제는 BikeShop(자전거가게(?))라는 WPF어플리케이션 생성후 Contact.xaml 페이지를 추가하여 나타내준 모습입니다. Contact.xaml 파일에는 TextBox 2개와 TextBlock 2개가 존재합니다. WPF에서는 Winform과는 다르게 텍스트 박스 옆 설명 Text 등을 입력할 때 Label을 사용하지 않고 TextBlock을 사용하는 것을 염두에 두시기 바랍니다. MainWindow에 Contact파일을 띄우면 됩니다. 우선 솔루션에 Contact 페이지를 추가해주고 해당 재믈파일에 드래그엔 드랍으로 위와같이 디자인 해줍니다. (전 괜히 막 만지다가..