본문 바로가기

전체 글

(104)
C# 교육 2일차 Enumerations – Enum 가독성, 실제로는 숫자로 저장 제한된 값 struct - Value Type : stack - 상속이 안됨 - data - method - constructor - property - event class - Reference type : heap - 상속이 됨 - data - method - constructor - property - event public struct Coffee { public int Strength; public string Bean; public string CountryOfOrigin; // Other methods, fields, properties, and events. } Naming Convention 1. PascalCasing C..
C# 교육 1일차 . NET FRAMEWORK 1. CLR 2. Class Library 1. CLR -Code가 실행되는 전반적인 환경 제공 소스코드 빌드(compile,link) 실행파일 .cs .exe Microsoft Intermediate language 실행 | JIT Compiler (Native Compiler) : CLR에 포함 | Just In Time Machine Code(native Code) 다양한 환경에서 구동 가능 -Managed Code (Managed Environment) (CLR이 관리하는)관리코드/관리환경 Unmanaged Code (Unmanaged Environment) (CLR이 관리하지않는)비관리코드/비관리환경 (ex. 메모장) 2. Class Library Namespace로..
2023.09.15 네트워크 통신( EndPoint, TCP 통신) System.Net.IPEndpoint 접점, 종점, 종단점. TCP/IP에서 접점이란 IP조소 + 포트를 일컬으며 이 정보를 IPEndPoint 타입을 제공한다. 예를 들어 주소가 192.168.1.10이 할당되어 있고 9000번 포트를 지정한 IPEndPoint는 다음과 같이 만든다. IPAddress ipAddr = IPAddress.Parse("192.168.1.10"); IPEndPoint endPoint = new IPEndPoint(ipAddr, 9000); System.Net.Dns 웹 브라우저를 만든다고 가정해 보면, 사용자로부터 "http://www.microsoft.com"라는 문자열을 입력받으면 TCP/IP 통신을 위해 대응되는 IP 주소로 바꿔야 한다. 이때 사용할 수 있는 방법이..
2023.09.14 BCL - 파일, 스레드, 네트워크 통신 (포트 까지) 파일 System.IO.FileStream 파일을 다루기 위한 BCL의 가장 기본적인 타입. MemoryStream의 부모 클래스와 동일한 Stream 타입을 상속받았고 전체적인 동작 방식도 유사하다. 디스크 파일을 대상으로 읽기/쓰기 작업을 한다. class Program { static void Main(string[] args) { using (FileStream fs = new FileStream("test.log", FileMode.Create)) { StreamWriter sw = new StreamWriter(fs, Encoding.UTF8); sw.WriteLine("Hello World"); sw.WriteLine("Anderson"); sw.Write(32000); sw.Flush();..
2023.09.13 BCL (시간, 문자열, StringBuilder, 정규 표현식, 컬렉션, ArrayList, Hashtable) BCL (Base Class Library) C#과 같은 언어로 만들어진 프로그램에서 운영체제와 연동할 수 있게 관련 기능을 모아서 담아 놨다. 운영체제의 소켓, 스레드, 파일, 레지스트리 등에 접근하고 싶다면 BCL에서 제공하는 클래스를 사용하면 된다. BCL은 운영체제와 중계 역할만 하는 것은 아니다. 처리에 해당하는 과정에서 자주 사용되는 것들도 포함된다. 예를 들어, 데이터 처리 과정 중에 다양한 수학적인 연산을 포함시키는 경우가 있다. Log, Cos 등의 메서드들은 이미 Math 타입으로 제공된다. 닷넷의 버전이 올라가며 BCL에도 기능들이 추가되는데 최신 기능을 이전 버전에서는 사용할 수 없다. 시간 System.DateTime DateTime은 struct로 정의된 값 형식이다. 속성 중에..
2023.09.12 ref, out ,enum, readonly, const, event, index 구조체와 클래스가 아닌 기본 자료형에도 참조에 의한 호출을 사용할 수 있다. 다음 예제는 ref예약어를 사용해 메서드 호출한 측의 두 변수의 값을 바꾸는 동작을 보여준다. using System; namespace Week2_2 { class Program { static void Main(string[] args) { int value1 = 5; int value2 = 10; SwapValue(ref value1, ref value2); Console.WriteLine("value1 == " + value1 + ", value2 == " + value2); } private static void SwapValue(ref int value1, ref int value2) { int temp = value..
2023.09.11 인터페이스를 이용한 콜백 구현 ~ ref...ing 인터페이스를 이용한 콜백 구현 interface ISource { int GetResult(); } class Source : ISource { public int GetResult() { return 10; } public void Test() { Target target = new Target(); target.Do(this); } } class Target { public void Do(ISource obj) // Source 타입이 아닌 ISource 인터페이스를 받는다. { Console.WriteLine(obj.GetResult()); // 콜백 메서드 호출 } } 낯설게 느껴지던 델리게이트를 사용하기보다는 오히려 상속이라는 이미 익숙한 개념으로 콜백을 구현했다. 콜백을 구현할 때 델리게이트와..
2023.09.08 클래스 간의 형변환~ 인터페이스 자체로 의미부여 static void Main(string[] args) { // 인터페이스 자체는 인스턴스화할 수 없지만 배열은 가능하다. IDrawingObject[] instances = new IDrawingObject[] { new Line(), new Rectangle() }; foreach(IDrawingObject item in instances) { item.Draw(); // 인터페이스를 상속받은 객체의 Draw 메서드가 호출됨 } // 자식 클래스로부터 암시적 형변환 가능 IDrawingObject instance = new Line(); instance.Draw(); } 클래스 간의 형변환 타입을 정의하는 것은 단위를 빈번하게 사용하는 프로그램에서도 유용하다. 대표적인 예로 통화(currency) ..