본문 바로가기

반응형

분류 전체보기

(425)
[C#] nullable reference 이번 포스트는 개인적으로 쓸까 말까 고민을 많이 했다. 읽다 보면 알게 되겠지만 이게 무슨 개소린가 싶은 전처리 문법이 C# 8.0에 추가 되었다. nullable 값 형식 C#에서 값 타입 변수에 null을 대입하면 오류가 나지만 타입 뒤에 물음표(?)를 붙여주면 "nullable 허용 값 형식"이라고 값을 가지는 변수지만 null을 지정 할 수도 있다. int m1 = 10; // 정상 int m2 = null; // 에러 int? m3 = null; // 정상 물론 string과 같은 참조 타입 변수는 null을 대입해도 아무런 문제가 없다. string s = null; int len = s.Length; // exception 그런데 문제는 이렇게 null 값을 대입 할 수 있도록 해놓으니 위 ..
[C#] using 키워드 in 8.0 C#에서 using 키워드는 두 가지 의미로 사용 된다. 지시문으로써 using 다른 네임스페이스에 정의된 타입을 Import 하거나, 네임스페이스에 대한 별칭을 만들때 사용. using System //코드 상단에 네임스페이스 정의 using Project = PC.MyCompany.Project; // 별칭 C# 6.0 부터 using static 문법이 추가 되었다. 스태틱 메소드를 클래스 이름을 명시하지 않고 호출하기 위해 사용 된다. using static System.Console; // WriteLine("Hello World!") ... WriteLine("Hello World!"); // Console이 생략 되었다 'using' statement 객체의 라이프 사이클을 제어하기 위해 사..
[C#] Local Function 이번 포스트는 C#의 로컬 함수(local function)이라는 개념에 대해서 살펴 보도록한다. 초보자 대상이 아닌 어느 정도 C#과 프로그래밍에 대한 개념이 있는 사람을 대상으로 작성하였으므로 개념이나 코드에 관련된 설명 중 기본적인 부분은 생략되어 있는 부분이 많다. 이해가 잘 안가는 부분들에 대해서 댓글로 남겨 주시면 성실히 답변해 드리도록 하겠다. Local Function이란? C# 7.0 부터 추가 된 개념으로써 메소드 안에 메소드를 정의 할 수 있는 문법이다. 메소드 안에 다시 메소드를 만드는 문법 자신이 포함된 메소드에서만 호출할 수 있다. public double Divide(double a, double b) { double real_devide(double a, double b) /..
[C#] switch expression in 8.0 C# 8.0 부터 추가된 switch expression에 대해서 알아 보도록 하겠다. 이번 포스트는 문법 보다는 개념적인 부분을 많이 다루려 한다. 가장 먼저 '문(statement)'와 비교하여 '표현식(expression)'이 무엇인지 개념에 대해 살펴보고, 기존 switch statement와 switch expression의 개념적 차이에 대해서 살펴 본다. 개념을 간단히 이해한 후 switch expression의 활용 방안에 대해 본격적으로 알아 보도록 하자. 문? vs 표현식? C# 8.0에는 switch statement에 이어 switch expression이 추가 되었다. 먼저 statement와 expression의 차이를 알아 보자. Statement(문, 문장) 프로그램을 구성하..
윈도우 배치 스크립트(Batch Script) - Date & Time 배치 스크립트의 날짜와 시간을 다루기 위해 다음 두 가지 명령어가 있다. DATE 이 명령어는 시스템 날짜를 가져온다. Syntax DATE Example @echo off echo %DATE% Output 현재 날짜가 명령 프롬프트에 표시된다. Mon 12/28/2015 TIME 이 명령은 시간을 설정하거나 표시한다. Syntax TIME Example @echo off echo %TIME% Output 현재 시간이 아래처럼 출력된다. 22:06:52.87 Date in Format Year-Month-Day 다음은 날짜와 시간을 가져 오는데 사용 될 수 있는 몇 가지 다양한 활용법이다. Example @echo off echo/Today is: %year%-%month%-%day% goto :EOF ..
[C#] 패턴 매칭(Pattern Matching) 패턴 매칭이란? 여기서 말하는 "패턴 매칭"은 정규 표현식을 이용한 문자열 매칭이 아니다. 패턴 매칭이란 "임의의 객체가 특정 패턴(모양, 타입, 값)을 만족하는지 조사 하는 것"이다. 예를 들어 "객체 r의 타입은 Rect 타입인가? r은 정사각형인가? r의 좌표는 10인가?" 등을 조사하는 것이다. 패턴 매칭 임의의 객체가 특정 패턴(모양, 타입, 값)을 만족하는지 조사 하는 것 패턴 매칭은 아래와 같은 종류가 있다. type pattern matcing : C# 초기 부터 지원. C# 7.0에 기능 추가 var pattern matching : C# 7.0 const pattern matching : C# 7.0 switch expression : C# 8.0 Type Pattern Matching..
[C#] System.Range Range란? 일반적으로 우리는 배열 연산을 사용할 때 인덱스를 이용하여 배열의 요소 하나에만 접근 했다. 하지만 C# 8.0 부터 Range를 이용해 배열의 여러 요소에 접근 할 수 있는 방법을 제공한다. class Program { static void Main(string[] args) { string s = "ABCDEFGHIJ"; char c = s[2]; // C string s1 = s[2..7]; // CDEFG string s2 = s[2..^3]; // CDEFG Console.WriteLine($"{c}, {s1}, {s2}"); } } 8라인의 배열 접근 연산을 보면 "s[2..7]" 와 같이 낮선 문법이 보인다. 암묵적으로 Range 객체를 생성하는 문법으로써 두 개의 인덱스 사이..
[C#] System.Index 이번 포스트에서는 C# 8.0에서 추가된 인덱스(index)라는 개념에 대해 살펴 보도록 하겠다. 들어가며.. Index에 대한 설명에 앞서 아래 예제를 보자. 특히 10라인에 ^ 기호가 사용 된 부분을 주목하자. using System; class Program { static void Main(string[] args) { int[] arr = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 }; int n1 = arr[2]; int n2 = arr[^2]; // 뒤에서 부터 접근 Console.WriteLine($"{n1}, {n2}"); // 3, 9 } } 10개짜리 정수 배열을 만들고 인덱스를 이용해 접근하는 간단한 예제다. 먼저 9라인을 보면 인덱스 2의 위치에 있는 요소에 접근한다..
[C#] IL(Intermediate Language) IL(Intermediate Language) 여러분의 PC를 보면 CPU가 있을 것이고 그 위에 운영체제가 설치 되어있을 것이다. 만일 여러분이 C/C++과 같은 언어로 프로그램을 작성한 다음 컴파일 하면 실행가능한 실행 파일. 즉, CPU가 이해하는 기계어 코드로 구성된 실행 파일이 나온다. 이런 실행 파일의 특징은 특정 CPU와 OS에서만 동작하는 실행파일이다. C/C++로 작성된 프로그램의 문제점 특정 환경(예를 들어 인텔 CPU, Windows OS)에서만 동작한다. 다른 환경에서 사용하려면 다시 컴파일 하거나 소스 코드 자체를 다시 작성해야 한다. C#의 경우에는 C# 컴파일러로 컴파일하고 나면 CPU와 OS에 독립적인 기계어 코드가 생성된다. 이것을 중간언어, IL(Intermedidate ..
[C#] IL 디스어셈블러(ildasm.exe) 유틸리티 ildasm.exe란? IL 디스어셈블러(ildasm.exe)는 IL 어셈블러(ilasm.exe)의 자매도구로써 IL코드를 포함하고 있는 포터블 실행 파일(PE)을 이용해 ilasm.exe의 입력에 적합한 텍스트 파일을 생성한다. 다시 말하면, ildasm.exe는 실행 파일 내부의 .NET 기계어 코드(CIL)을 분석해서 클래스 내용을 보여 주는 유틸리티다. 설치 ildasm.exe는 C#을 개발하기 위해 비주얼 스튜디오와 함께 설치 된다. 제대로 설치 되었다면 "C:\Program Files (x86)\Microsoft SDKs\Windows\v10.0A\bin\NETFX 4.8 Tools"에서 확인 할 수 있다(비주얼 스튜디오 2019 기준, 버젼마다 경로가 약간 다를 수 있다). 실행 ildasm..

반응형