본문 바로가기

Programming Language41

[C#] 널 조건부 연산자 (Null-conditional operator) 널 조건부 연산자 (?.) - 객체의 멤버에 접근하기 전에 해당 객체가 null인지를 검사하여 그 결과가 참(즉, 객체가 null) 이면 그 결과로 null을 반환하고, 그렇지 않은 경우에는 . 뒤에 지정된 멤버를 반환한다. 이렇게 하면 일일이 if문을 써서 null을 체크할 필요가 없다! 만약에 인덱서, 배열 요소등을 접근할 경우에는 ?[] 로 표현하면 된다. 예제 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 using System.Collections; using static System.Console; namespace NullConditionalOperator { class MainApp { static void Main(s.. 2019. 4. 28.
[C#] var var - 데이터의 타입을 개발자가 아닌 컴파일러가 결정하게 하는 변수 c#은 강력한 형식 검사를 하는 언어이지만, var 키워드를 통해서 약한 형식 검사를 하는 언어의 편리함도 지원한다. int, string 같은 명시적 형식 대신 var를 사용해서 변수를 선언하면 컴파일러가 자동으로 해당 변수의 형식을 지정해준다! 초기화 단, var 키워드를 이용해서 변수를 선언하려면 반드시 선언과 동시에 초기화를 해주어야 한다. 그래야 컴파일러가 그 데이터를 보고 형식을 추론할 수 있다. var a = 3; // a는 int 형식 var b = "Hello~" // b는 string형식 var는 지역 변수로만 사용 가능하다! 또한 var는 지역변수로만 사용할 수 있다. var 키워드로 필드를 선언하면 컴파일러가 무.. 2019. 4. 28.
[C#] Nullable 형식 Nullable 형식 - Null (비어있는) + able (~ 될 수 있는), 즉 "비어 있는 상태가 될 수 있는" 형식이라는 뜻을 나타낸다. 우리가 프로그래밍을 하다 보면 어 떤 값도 가지지 않는 변수가 필요할 때가 있는데 0이 아닌 비어 있는 변수에게 할당된 메모리 공간을 비워 둘 수 있도록 Nullable형식을 사용하면 된다. 변수 선언 방법 데이터 형식? 변수 이름; 값 형식? 참조 형식? Nullable 형식을 사용할 수 있는 경우는 값 형식에 한해서만 된다. 참조 형식은 사용불가! int? a = null; float? b = null; double? c = null; 위에서 선언한 변수는 모두 null로 초기화됐는데, 뜻은 "해당 변수를 비운다"라는 뜻이다. 그렇다면 아무 값도 넣지 않으면.. 2019. 4. 28.
[C#] 박싱과 언박싱 박싱(Boxing) - 값 형식을 참조 형식으로 변환하는 것을 말하며 스택에 있는 데이터가 힙으로 복사 언박싱(Unboxing) - 참조 형식을 값 형식으로 변환하는 것을 말하며 힙에 있는 데이터가 스택에 복사 값 형식의 자료는 스택 메모리 영역에, 참조 형식의 자료는 힙 메모리 영역에 할당이 된다. object 형식은 참조 형식 이기 때문에 힙에 데이터를 할당. int와 double 은 값 형식이기 때문에 스택에 데이터를 할당하지만 값 형식의 데이터 형식도 object 형식 객체에 담을 수 있다. 이처럼 object 형식에 값 형식 데이터를 할당하려고 하면 object 형식은 자동으로 박싱을 수행해서 데이터를 힙에 할당한다. 박싱 언박싱 a는 20이 박싱 되어 저장되어 있는 힙을 참조하고 있다. b는 .. 2019. 4. 28.
[C#] object 형식 object 형식 - 어떤 데이터 이든지 다룰 수 있는 데이터 형식 그렇다면, 왜 object 형식이 모든 데이터 형식의 데이터도 담을 수 있을까. 바로 상속의 효과 때문이다. 상속은 부모 데이터 형식을 자식 데이터가 물려받는 것을 의미한다. 부모로부터 데이터와 메서드를 물려받은 자식은 부모와 똑같이 동작할 수 있다. 그래서 C#의 모든 자료형 object가 모든 데이터를 다룰 수 있도록 하기 위해서 System.object를 상속을 받게 한 것이다. object 형식 예제 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 using System; using static System.Console; namespace Object { class Program { s.. 2019. 4. 28.