c#

    [.NET] 닷넷 Type 사용하기 - 7. reflection 과 attributes

    8. reflection 과 attributes .NET의 컴파일(빌드) 결과는 대게 DLL이나 EXE 형태의 파일이 될 수 있는데 이를 통틀어 Assembly라고도 합니다. 그리고 .NET의 Assembly는 크게 아래 4가지 부분으로 구성됩니다. Assembly metadata와 manifest Assembly의 File버전이나 참조된 Assembly등등을 나타냅니다. Type metadata Member와 같은 Type의 정보를 나타냅니다. IL code Methods나 속성, 생성자등을 구현합니다. Embedded resources Images와 같은 별개의 리소스자원을 나타냅니다. Metadata는 Code에서 구현된 Member나 Type 등의 정보를 토대로 자동으로 생성되거나 attribut..

    [.NET] 닷넷 Type 사용하기 - 6. 네트워크 리소스 활용

    7. 네트워크 리소스 활용 .NET은 Network와 관련된 여러 형식을 아래와 같이 지원하고 있습니다. Namespace Type 설명 System.Net Dns, Uri, Cookie, WebClient, IPAddress Dns, IP주소, URI등을 표현합니다. System.Net FtpStatusCode, FtpWebRequest, FtpWebResponse FTP와 관련된 표현에 사용됩니다. System.Net HttpStatusCode, HttpWebRequest, HttpWebResponse HTTP와 관련된 표현에 사용되며 이와 관련해 System. Net.Http의 Type또한 마련되어 있습니다. System.Net.Http HttpClient, HttpMethod, HttpReques..

    [.NET] 닷넷 Type 사용하기 - 5. index와 range 그리고 Span

    6. index와 range 그리고 Span .NET Core 2.1부터 .NET에 대한 마이크로소프트 주요 목표 중 하나는 성능과 리소스 활용의 향상이며 Span는 그 목표의 일환 중 하나입니다. Array 구현할 때 기존에 존재하는 Array객체에서 일부분만을 필요로 하는 경우 기존 객체를 그대로 복사해 새로운 Array를 생성하고 필요한 처리를 수행하는 경우가 있습니다. 그러나 이러한 방법은 메모리에 같은 객체를 반복해 생성하게 된다는 측면에서 그다지 효휼적인 방법이라고는 할 수 없습니다. 위와 같이 전체가 아닌 일부분의 요소만을 필요로 한다면 span을 사용함으로써 성능과 효율성을 기대할 수 있습니다. 다만 Span은 Collection이 아닌 Array를 대상으로만 사용할 수 있습니다. Span..

    [.NET] 닷넷 Type 사용하기 - 4. Collection 사용

    5. Collection 사용 Collection은 일반적으로 다수의 값을 저장하기 위한 용도로 사용되며 .NET에서는 Collection과 관련한 여러 Type을 정의하고 있습니다. Namespace Type 설명 System.Collections IEnumerable IEnumerable Collection에 의해 사용되는 인터페이스와 기반 System.Collections.Generic List Dictionary Queue Stack generic type 매개변수를 통해 Collection에서 다룰 형식을 지정 System.Collections.Concurrent BlockingCollection ConcurrentDictionary ConcurrentQueue 멀티스레드에서 사용 System...

    [.NET] 닷넷 Type 사용하기 - 3. 정규식(regular expressions)

    4. 정규식(regular expressions) 사용 정규식은 특정값의 형식, 예를 들어 사용자가 입력한 값이 원하는 형식과 일치하는지를 확인할 수 있는 강력한 수단이며 대부분이 프로그래밍 언어에서 정규식을 기본적으로 지원하고 있습니다. using System; using System.Text.RegularExpressions; namespace myapp { class Program { static void Main(string[] args) { Console.Write("귀하의 나이를 입력하십시오. : "); string? input = Console.ReadLine(); Regex regx = new(@"\d"); if (regx.IsMatch(input ?? string.Empty)) Conso..

    [.NET] 닷넷 Type 사용하기 - 2. 날짜와 시간

    3. 날짜와 시간 다루기 C#에서 날짜와 시간을 다루는데 중요한 Type으로 다음 2가지가 존재합니다. DateTime 특정 날짜와 시간을 표현합니다. TimeSpan 특정 기간을 표현합니다. 위 2개의 Type은 같이 사용되는 경우가 많은데 예를 들어 다른 것으로부터 DateTime값을 빼는 경우 그 결과로 TimeSpan을 가져오거나 TimeSpan값을 DateTime에 더하는 경우 그 결과로 DateTime값을 가져오는 경우 등이 있습니다. ● 날짜와 시간의 지정 날짜와 시간 값을 생성하는 가장 일반적인 방법은 일과 시간처럼 각각 개별적인 값으로 생성하는 것입니다. 날짜나 시간을 단순 문자열로 표현하면 그것 만으로 파싱이 가능하기는 하지만 문화권에 따라 자칫 잘못 해석될 수 있으므로 문자열로의 표현..

    [.NET] 닷넷 Type 사용하기 - 1. 숫자, 문자열

    .NET에는 숫자나 문자열, 배열등을 위한 다양한 Type이 정의되어 있으며 클래스나 구조체와 같은 사용자 정의 Type을 제외하고 대부분 프로그램에서 사용 가능한 수많은 Type을 포함하고 있습니다. 1. 숫자형 숫자는 가장 일반적으로 사용되는 데이터 타입중 하나로 아래와 같은 Type들이 존재합니다. Namespace Type 목적 System SByte, Int16, Int32, Int64 0을 포함한 양수, 음수등 일반적인 정수전체를 다룹니다. System Byte, UInt16, UInt32, UInt64 0을 포함한 양수 전체를 다룹니다. System Half, Single, Double 부동 소수점과 같은 실수를 다룹니다. System Decimal 고정 소수점과 같은 실수를 다룹니다. Sy..

    [C#] File 다루기 - 4. 객체의 직렬화(Serialization)

    [C#] File 다루기 - 4. 객체의 직렬화(Serialization)

    4. 객체의 직렬화(Serialization) 직렬화는 객체를 특정한 형식에 맞춰 byte배열로 변환하여 처리하는 것을 말합니다. 역직렬화는 반대의 처리 개념이며 이는 객체의 현재 상태를 그대로 저장해 필요할 때 다시 객체를 그대로 재현할 수 있도록 합니다. 마치 게임에서 현재 상태를 저장해 뒀다가 다음날 마지막에 했던 플레이 상태를 그대로 되돌려 계속해서 게임을 진행하는 것과 같습니다. 직렬화된 객체는 파일이나 Database로 그 자체를 데이터화하여 저장할 수 있기 때문입니다. 객체를 직렬 화하는 데 사용되는 몇 가지 형식이 존재하지만 오늘날 가장 많이 사용하는 방식은 XML과 JSON 이 2가지입니다. JSON은 Web이나 Mobile과 같이 제한된 환경하에서 가장 최적의 선택이 될 수 있으며 XM..