프로그래밍 언어/C#

    C# 포인터 사용

    C#에서는 포인터를 안전하지 않은(unsafe) 형식으로 지정하여 표면적으로는 지원하지 않고 있지만 기존의 C++의 라이브러리 등의 외부 라이브러리를 사용한다던가 프로그램의 비약적인 성능향상의 목적을 위해 사용할 필요성을 가지게 된다. 이러한 포인터를 사용하기 위해서는 다음과 같은 절차를 거쳐야 사용할 수 있다. 1. 솔루션설정변경 생성한 솔루션에서 설정메뉴를 통해 들어간 뒤 빌드를 확인하면 위와 같이 안전하지 않은 코드를 사용할 수 있는 체크박스를 확인할 수 있다. 이 항목을 체크하면 솔루션 내에서 포인터를 사용할 수 있는 조건을 만들어 주게 된다. 2. unsafe 블럭 생성 class Program { static void Main(string[] args) { int number = 10; uns..

    .NET 환경의 컴파일 과정 - CLR, CIL, JIT, AOT

    예전의 C, C++의 경우 개별 환경이 프로그램의 실행 시간에 영향을 미치는 문제가 있었지만 Java가 나오면서 컴파일된 바이트코드는 윈도우, 리눅스, 그 어떤 실행환경이든 JVM만 실행 가능하다면 실행할 수 있다는 장점을 통해 인기를 끌었고, 마이크로소프트는 이를 이용해 기존 문제를 해결할 수 있도록 .NET 환경에 가상 머신을 만들어서 .NET 환경의 언어로 개발된 IL(Intermediate Language, 중간 언어) 코드들은 .NET Framework가 설치된 어떠한 환경에서도 실행할 수 있도록 하였다. 대표적인 예시로 VB .NET, C#이 있다. CLR(Common Language Runtime, 공통 언어 런타임)은 이 가상머신의 구성요소 중 하나이며, CIL(Common Intermid..

    C# 날짜 관련 함수(DateTime)

    시간을 표현하는 방법 DateTime now; // 날짜 변수 now선언 now = DateTime.Now; // 현재시간 Console.WriteLine(now); // 현재시간 Console.WriteLine(now.Year); // 현재 년도를 보여줌 Console.WriteLine(now.Month); // 현재 월을 보여줌 Console.WriteLine(now.Day); // 현재 일을 보여줌 Console.WriteLine(now.DayOfWeek); // 현재 몇 주인지 보여줌 Console.WriteLine(now.DayOfYear); // 1년중 몇일째인지 보여줌 Console.WriteLine(now.TimeOfDay); // 금일 자정부터 몇시간 보여줌 Console.WriteLin..

    C# DateTime & TimeSpan

    DateTime 날짜와 시간을 나타내기 위해 사용한다. DateTime dt = new DateTime(2016, 08, 24); 기본 생성은 년, 월, 일을 사용해서 초기화 하는 것이다. DateTime dt = new DateTime(2016, 08, 24, 23, 30, 12); Console.WriteLine(dt.ToString()); 시, 분, 초 까지 줘서 초기화 할 수 도 있다. info["date"] = DateTime.Now; 현재 시간은 DateTime.Now 프로퍼티를 사용해서 얻을 수 있다. Console.WriteLine(default(DateTime)); 기본 값은 default(DateTime)으로 얻을 수 있으며, 0001-01-01 00:00:00 이다. DateTime ..

    C# 각 타입별로 접근제한자 (Access Modifiers)

    이중이 아닌것들 | Default | Permitted declared accessibilities ------------------------------------------------------------------ namespace | public | none (always implicitly public) enum | public | public, internal interface | internal | public, internal class | internal | public, internal struct | internal | public, internal delegate | internal | public, internal 이중인것들 | Default | Permitted declared ..

    C# 문자열 배열을 int 배열로 변환

    1. Array.ConvertAll() 메서드를 사용 using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Linq; namespace Array_of_String_to_integer { class Program { static void Main(string[] args) { //method 1 using Array.ConvertAll string[] temp_str = new string[] { "1000", "2000", "3000" }; int[] temp_int = Array.ConvertAll(temp_str, s => ..

    C# Equals, ==, ReferenceEquals 비교

    1-1) 같음 연산자 '==' 연산자 왼쪽 오른쪽에 오는 것들이 같은지를 판단하는 연산자다 값 타입의 경우 좌 우의 값이 같으면 True, 다르면 False 를 반환한다. 참조 타입은 좌 우 객체가 같은지를 비교한다. (객체 내부의 값이 같은지 비교 한다는 뜻, 참조(주소)는 상관없음) 1-2) Equals 도 똑같이 == 과 동일한 역할 public virtual bool Equals(object? obj) public virtual bool Equals(object? objA, object? objB) Equals 메서드는 기본적으로 객체가 같은지를 비교한다. 기본적으로는 == 과 동일한 작동한다. 값 타입은 값이 같은지 비교를 하고 참조 타입은 객체가 같은지를 비교한다. (객체 내부의 값이 같은지 ..

    C# 복사본 만들기

    일반적으로 원본 개체에 영향을 주지 않고 복사본을 수정하거나 이동하기 위해 수행된다. 1. Object.MemberwiseClone() 방법 그만큼 Object.MemberwiseClone() 메서드를 사용하여 현재 개체의 얕은 복사본을 만들 수 있다. 참조 딥 카피를 구현하려면 MemberwiseClone() 방법. using System; public class X { public string str; public object Clone() { return this.MemberwiseClone(); } } public class Example { public static void Main() { X obj = new X(); obj.str = "Hello!"; X copy = (X) obj.Clone..

    C# 문자열 자르기(Split), 추출(Substring)

    Split 메서드 문자열을 특정 문자 또는 문자열을 기준으로 분리한다. 분리된 문자열은 배열로 반환되며, 전화번호에서 '-'를 기준으로 문자열을 분리하거나 이메일에서 '@'를 기준으로 문자열을 분리하는 경우 사용할 수 있다. string phoneNumber = "010-1234-5678"; string[] phoneNumberSplit = phoneNumber.Split("-"); foreach(string splitNumber in phoneNumberSplit) { Console.WriteLine(splitNumber); } "-"을 기준으로 문자열을 분리하였으며, 분리된 문자열은 배열로 반환한다. 즉, 배열 phoneNumberSplit에는 [ "010", "1234", "5678" ]이 할당된다..

    C# 문자열 공백 기준으로 분할

    String.Split() 방법. 구분 기호를 지정하지 않으면 공백 문자로 문자열을 분할한다. using System; public class Example { public static void Main() { String s = "Split by\twhitespace"; string[] tokens = s.Split(); Console.WriteLine(String.Join(", ", tokens)); // 공백으로 분할 } } 여러 공간을 처리하려면 다음을 사용할 수 있다. String.Split(char[]) method 과부하 StringSplitOptions.RemoveEmptyEntries 아래 그림과 같이 옵션을 선택. using System; public class Example { pub..