언어 54

C# 의 타입 - 2. 기본 타입 (Primitve Type)

기본 타입 (Primitve Type) 32비트의 정수형 변수를 할당한다면 다음과 같이 코드를 쓸 수 있다. System.Int32 a = new System.Int32(); 그런데 이렇게 쓰면 너무 귀찮으니까... 대부분의 컴파일러는 다음과 같이 표현하도록 해준다. int a = 0; 그리고 위와 같은 코드는 System.Int32 타입을 사용한 코드와 의미가 동일한 IL 코드를 만들어준다. 이처럼 컴파일러가 직접 지원하는 데이터 타입들을 기본 타입이라고 부른다. C#의 기본 타입과 FCL에 대응되는 타입은 다음과 같다. 기본 타입 FCL 타입 CLS 호환 비고 sbyte System.SBtye ㄴㄴ byte System.Byte ㅇㅇ short System.Int16 ㅇㅇ ushort System.U..

언어/C# 2020.10.31

C# 의 타입 - 1. 타입의 기초

System.Object c#의 모든 타입들은 System.Object를 상속받는다. class A // class A : System.Object 와 같다. (암시적으로 상속) { // code } Object 클래스에는 필드는 존재하지 않으며 다음과 같은 메서드들이 존재한다. (~Object()는 Finalize 메서드이며 protected임) namespace System { public class Object { public Object(); ~Object(); public static bool Equals(Object objA, Object objB); public static bool ReferenceEquals(Object objA, Object objB); public virtual boo..

언어/C# 2020.10.31

L_value와 R_value

L-value & R-value L value는 왼쪽에 있는 거, R value는 오른쪽에 있는 거... 가 아니다. L-value는 나중에 다시 부를 수 있는 것. R-value는 그렇지 못한 것.으로 구분하면 쉽다. 예를 들어, int a=0; int b=a; 에서 a 는 L-value이다. 0은 다시 부를 수 없으므로 R-value이다. b 역시 L이겠지? R-value는 임시적으로 생성된 값이라고 볼 수 있다. 그러면 대체 왜 이런 걸 구분할까? R-value를 잘 이용하면 메모리를 효율적으로 사용할 수 있기 때문이다. 예를 들어, 어떤 값이 R-value이고 이 값을 전달하기 위해 몇 개의 변수를 거친다고 가정해보자. 이 값을 전달하기 위해 변수를 거칠 때마다 값을 복사할 필요가 있을까? 어차피..

언어/C++ 2020.10.11