일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 | 26 | 27 | 28 | 29 | 30 | 31 |
- react
- react native typescript navigate
- 스탠실 버퍼 튜토리얼
- 스탠실 버퍼 시작
- react native typescript
- react-native
- CSS
- react native
- c++ using
- 리액트 네이티브 맥
- react native accessible
- cyworld
- unity stencil buffer
- C++
- GitHub
- c++ 정보은닉
- 스탠실 버퍼 사용
- javascript
- 싸이월드
- 벡터와 리스트의 차이
- html
- stencil buffer
- node
- react native 타입스크립트
- 리액트 네이티브 설치 오류
- react native mac
- Expo
- node.js
- react native ios 기기 연결
- react native typescript navigation
- Today
- Total
혀니의 이거저거 뿌시기
const와 readonly의 차이 (+ static) 본문
const, readonly 둘 다 값을 수정할 수 없도록 하는 상수임.
둘의 차이는? const : 컴파일 타입의 상수 / readonly: 런타임 상수
const
- 컴파일 타입 상수임 ( 컴파일 시 const 변수의 값을 가져옴)
- 내장 자료형( 정수형, 실수형, Enum, String)에 대해서만 사용 가능함
- 변수 선언과 동시에 값을 할당해야 함
- 메모리 할당 위치는 Stack Memory임 (static 선언을 하면 heap 메모리에 저장 가능)
readonly
- 런타임 상수임 (exe or dll을 사용할 때 변수의 값을 가져옴)
- 모든 자료형에 사용할 수 있으며, 생성과 동시에 초기화할 필요는 없음
- 생성자 단계에서 단 1번 할당을 통해 초기화 가능
- 메모리 할당위치는 Heap Memory임
const보다 readonly를 써야 하는 이유
Const는 Stack Memory 에 저장되기 때문에 접근이 빠르다는 장점이 있지만,
const는 컴파일 상수이기 때문에 const변수 값이 바뀌는 경우 해당 프로젝트 뿐만 아니라 참조받거나 영향을 받는 프로젝트 모두 재컴파일을 해야한다는 단점이 있다.
반면, readonly는 생성 시 선언하지 않아도 생성자에서 초기화하여 사용할 수 있기 때문에 유연하며,
실제 사용하는 단계에서 변수의 값을 가져오는 장점이 존재한다.
공돌창고 :: C#/.NET readonly vs const 예제로 보는 차이점 (tistory.com)
C#/.NET readonly vs const 예제로 보는 차이점
C#, 닷넷에서 readonly 키워드와 const 키워드는 비슷하지만 다른 키워드 이다. 두 키워드의 차이점 및 공통점에 대해서 알아보자. const 키워드는 대부분에 프로그래밍 언어에서 지원하는 기본적인
hijuworld.tistory.com
+static
#include <stdio.h>
int test()
{
static int a = 0;
printf("%d", a);
a = 3;
}
int main()
{
test();
test();
}
이 코드를 실행 시 a = 0;을 만났을 때 a로 바뀌는 것이 아니라 이전에 만났던 3을 넣어줌
(새로 int로 선언 시 이미 선언이 되어있는 static이므로 초기화를 무시하고 바뀐 3을 출력함)
결과: 03
#include <stdio.h>
int main()
{
const int a = 3;
a = 5;
printf("%d",a);
}
if) const로 선언 시
a = 3 -> 절대절대 처음 지정한 값이 변하지 않아 디버깅 에러
'CS > C# & Unity' 카테고리의 다른 글
가비지컬렉터(GC : Garbage Collection) (1) | 2023.12.12 |
---|---|
C#의 string (0) | 2023.12.12 |
직렬화와 역직렬화 (1) | 2023.12.12 |
스태틱 게임오브젝트와 배칭 (0) | 2023.10.01 |
드로우콜과 배치 (0) | 2023.10.01 |