Programming/C#
명령어를 실행하기 위한 스케줄링 단위로 프로세스 내부에 생성할 수 있다.멀티 스레딩을 지원하는 운영체제일 경우 하나의 프로세스에 여러 개의 스레드 자원을 가질 수 있다.단일 스레드라는 것은 여러 작업을 동시에 할 수 없음을 의미, 이를 위해서 멀티 스레드가 필요.1. Foreground Threadstatic void Main(string[] args) { var thread = new Thread(Func); thread.Start(); } static void Func() { //3초 후 프로그램 종료 Thread.Sleep(3000); }위 코드와 같이 프로그램 실행 종료에 영향을 주는 스레드를 Foreground Thread라고 한다.2. Background Threadstatic void M..
# Nullable Type이란? Nullable Type은 null이 가능한 타입을 말한다.참조 타입의 경우 null값이 할당될 수 있지만 Value 타입은 null 할당이 불가능하다.그래서 Value 타입에서 null이 가능하게 하는 것이 바로 Nullable Type이다.위 예시에서 두 구문을 동일하다.따라서 기호에 따라 사용하면 된다. # Nullable Type의 특성 기본적으로 null값을 허용하지 않는 타입에만 적용이 가능하다.HasValue, Value 속성(읽기전용)과 GetValueOrDefault 메소드를 사용할 수 있다. 값 할당된 경우 값 할당되지 않은 경우(null) HasValue true false Value (할당된)값 InvalidOperationException 발생 G..
# ??(null 병합 연산자)란? ??연산자는 'null 병합 연산자'라고도 한다.이 연산자의 정의는 아래와 같다.왼쪽 피연산자의 값이 null이 아닐 경우: 왼쪽 피연산자를 리턴.왼쪽 피연산자의 값이 null인 경우: 오른쪽 피연산자를 리턴.위 예시에서 첫번째 줄은 단순히 op라는 string 변수에 null로 초기화 해 두었다.실질적인 ??연산자 사용은 두번째 줄이다.따라서 첫번째 줄은 무시하고 두번째 줄에서 op라는 피연산자의 값은 아래와 같다.- null이 아니면 -> str = op;- null이면 -> str = "not setting";따라서 op = null이므로 str = "not setting"이 된다. ??연산자는 피연산자의 타입이 null을 허용하면 사용 가능하다.따라서 strin..
# var 키워드란? var키워드는 암시적 타입 지역 변수(Implicitly typed local variable)라고도 한다.var키워드로 type이 선언된 변수는 대입되는 값의 type으로 결정된다.(built-in 타입, 사용자 정의 타입, 무명 타입, 닷넷 프레임워크 클래스 라이브러리에 정의된 타입 가능)위 예시에서 var i에 복사되는 값은 int형 정수 10이므로 변수 i는 컴파일러에 의해 int type으로 결정된다.따라서 var 키워드로 선언된 변수는 명시적 타입 지정 방식으로 선언된 변수와 동일하다고 봐도 무방하다.단, var 키워드를 사용 시 몇가지 제약조건이 따른다. # var 키워드 사용에 대한 제약조건지역변수에만 사용 가능하다.변수 선언과 동시에 반드시 초기화되어야 한다.null..
# foreach문에 대한 설명 foreach문은 배열 또는 열거형 컬렉션의 각 요소들을 순차적으로(인덱스 0~마지막까지) 리턴해주는 구문이다. 예를 들어 array라는 배열이 먼저 선언되어 있다고 가정하자. string[] array = new string[2];위 구문에서 item은 순차적으로 item[0], item[1]을 리턴받게 된다. # 배열을 이용한 foreach문 예제int형 배열에 담겨있는 정수값을 순차적으로 리턴해주는 간단한 예제이다. # List(열거형 컬렉션)를 이용한 foreach문 예제사람의 이름과 나이를 나열해주는 예제이다.예제에 대한 설명) 1. 이름, 나이의 속성을 가지는 클래스 People을 정의하였다. (Line: 9~18)2. 각각의 이름과 나이를 가진 사람 객체를 l..
# as연산자 객체를 캐스팅 할 때 사용되는 연산자이다. as연산자는 캐스팅에 성공하면 캐스트 결과를 리턴하고 캐스팅에 실패하면 null값을 리턴한다. 클래스간 타입변환을 명시적으로 할 때, 컴파일에서 에러가 발생하지 않지만 프로그램을 실행하면 'InvalidCastException'이 발생하는 경우가 있다. [C#문법] 캐스팅 및 타입 변환 에서 2-2) 클래스 타입간의 변환 참고.이러한 경우 as연산자를 사용하여 캐스팅한다면 프로그램 실행을 거치지 않고도 캐스팅이 성공유무를 확인할 수 있다.단, as연산자는 reference type간의 캐스팅에만 가능하다. (value type은 불가) # is연산자is연산자 역시 as연산자처럼 캐스팅 성공유무를 확인할 수 있는 연산자이다. 하지만 그 역할은 다르다..
# Boxing이란? Boxing은 value type의 값을 object type으로 변환하는 것을 말한다.닷넷 프레임워크에서 모든 타입은 object type의 상속을 받는다.그래서 value type의 값을 좀 더 큰 영역으로 포장한다고 하여 Boxing이라고 한다.* int type의 값을 Boxing한 코드이다.# Unboxing이란?Boxing의 반대로 object type의 변수가 가지고 있는 값을 value type으로 변환하는 것을 말한다.* 여기서 주목할 것은 boxing에서 암시적 타입변환, unboxing에서 명시적 타입변환을 사용한다는 것이다. 이유는 앞서 말했듯이, object type이 모든 타입을 상속하기 때문이다. 위의 내용을 메모리 영역에서 보면 아래와 같다. # 그렇다면..
# 타입 변환(Type conversions)이란? 타입변환은 객체의 타입을 변환하는 것을 말한다.어떠한 변수에 값을 복사할 때, 변수의 타입과 복사하고자 하는 값의 타입이 동일하다면 문제가 되지 않는다.하지만 서로 타입이 다르다면, 값이 담겨질 변수의 타입으로 변환하여 값을 복사하여야 한다.* int 타입의 변수 i에 string 값을 저장하려고하니 오류 메세지가 뜬다.# 암시적 변환(Implicit Conversions) 특별한 구문이 필요없으며 숫자 타입간의 변환, 클래스 타입간의 변환이 가능하다.숫자 타입의 변환- 데이터 손실이 없는 경우의 변환.ex) 예를 들어 byte 타입의 변수에 값을 복사하고자 할 때, 256이상의 값을 복사할 수 없다. (byte의 저장크기: 0~255) 클래스 타입간의..
# C#이란? C#은 Microsoft에서 개발한 객체지향 언어의 일종이다.개발자가 .Net Framework에서 실행되는 여러 응용 프로그램을 구축할 수 있도록 해주는 프로그래밍 언어이다.흔히 C++, Java와 비교하여 설명하는데 이는 C#이 두 프로그래밍 언어와 많은 유사성을 지니고 있기 때문이다.그러므로 두 언어를 공부한 경험이 있다면 보다 쉽게 C#을 공부할 수 있을 것이다. # .Net Framework Platform Architecture https://docs.microsoft.com 개발자가 C# 프로그램을 작성한 후 컴파일하면 C# 컴파일러에 의해 IL로 변환된다.여기서 IL은 (Intermediate Language)로 말 그대로 중간언어이다.(따라서 기계가 읽을 수 있는 기계어가 ..
# C# 개발환경 구축하기먼저, 아래의 사이트에 접속한다.http://www.visualstudio.com/ko/ 위 사진에서 빨간 네모박스에 마우스 커서를 이동시키면 사진과 같이 선택사항이 나온다.Professional과 Enterprise는 라이센스를 지불해야 하므로 무료 버전을 원한다면 Community 2017을 클릭한다. 그럼 바로 설치파일이 다운로드 되는 것을 확인할 수 있다.설치파일을 실행하면 아래와 같은 화면이 나타날 것이다. 계속 버튼을 누른다. 여기서 자신이 구축하고 싶은 개발환경을 선택하면 된다..NET, C++, ASP.NET, Python 등 다양한 개발환경이 선택 가능하다.C# 프로그래밍을 하기 위해서는 위 사진과 같이 .NET 데스크톱 개발을 체크한다.그리고 화면 하단에 설치되..