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 - 3 - 매소드 pass by reference static void Swap(ref int a, ref int b) { int temp = b; b = a; a = temp; } static void Main(string[] args) { int x = 3; int y = 4; Console.WriteLine("x:{0}, y:{1}", x, y); Swap(ref x, ref y); Console.WriteLine("x:{0}, y:{1}", x, y); } 가변길이 매개변수 params : 매개변수의 형식은 같으나 개수가 달라질 수 있는 경우 유용하다. static int Sum(params int[] args) { Console.Write("Summing... "); int sum ..
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 - MVVM (Model View ViewModel) 환율변환기 비트교육센터 고급과정 WPF를 끝으로 모든 수업이 끝났습니다. 워크샵도 다녀왔고 이제 다음주 부터는 팀프로젝트를 통한 협업을 진행합니다.. 많이 걱정도 되지만 좋은결과있었으면 좋겠습니다. 그럼 본문 내용 시작합니다. 디자이너는 View에 집중적으로 관심을가지며 디자인하고, 개발자는 로직, 내부에 집중적으로 관심을 가지며 개발을 해서 둘의 협업이 효율적으로 해주는 WPF(XAML,C#)에서 다시 유지보수가 쉽게하며, 설계자가 개발자가 올바른 코딩을 했는지 빠르게 확인할 수 있게 해주는 WVVM에 대해 알아봅시다. WVVM은 모델, 뷰, 뷰모델 이라는 뜻으로.. 간단히 말해서 화면에 표시할 뷰(UI)와 뷰에 표시되는 모델을 뷰모델이라고한..
WPF 실습#5 - DataGrid Binding 이번실습은 실습#4와 거의 동일한 방식의 코딩으로 진행됩니다. UI를 설명하자면 Search부분에서 검색한 타이틀이 바로 밑에있는 DataGrid에 표시되며, 선택하게되면 바로옆 Border영역에 디테일한 정보가 표시됩니다. 또한 디테일영역은 TwoWay로 변경시 내부 데이터도 동일하게 변경 가능합니다. 먼저 재믈(Xaml)코드를 설명하도록하겠습니다. 제가 보라색으로 지정한 영역은 Search영역 즉 검색을 가능하게 해주는 인터페이스영역입니다. 참고로 중요한 부분은 빨간색 밑줄을 쳐 놓았으므로 이부부만 확실히 이해한다면 이번 실습은 끝입니다. 여기서는 해당 텍스트박스의 내용이변하면 발생하는 TextChanged이벤트를 textBox_TextChanged로..