일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
Tags
- Language
- 개발 언어
- 그레이시
- 주짓수
- 정처기
- 프로그래밍 언어 순위
- 정보처리기사 후기
- 프로그래밍 언어
- 말의품격 이기주 힐링 책 도서
- 정보처리기사
- 점유율
- 정보처리기사 공부법
- 2017
- 정처기 공부법
- 변화
- 언어
- 브라이언 오르테가
- 순위
- 프로그래밍
- 정처기 후기
- 언어 순위
- 개발 언어 순위
- 2017티스토리결산
- 시나공
- 2018 정처기
- 정처기 실기
- 정처기 필기
- 2018 정보처리기사
- 필기
- 실기
Archives
- Today
- Total
Enjoy what you do!
c# value type, reference type 에 따른 Equals(), referenceEquals() 본문
프로그래밍 언어/C#
c# value type, reference type 에 따른 Equals(), referenceEquals()
쵸코맛 비비빅 2017. 12. 14. 18:06value type : int, long, double, float 등등 각종 변수 타입 (단 string 은 reference 타입), struct
-> 스택에 저장된다.
reference type : 객체(new 로 선언한건 뭐든 적용된다.), string.
-> 힙에 저장된다.
|
Equals() |
referenceEquals() |
int, double 등의 변수 |
값을 비교 |
주소 비교(무조건 거짓) |
객체 |
주소 비교 |
주소 비교 (이퀄스와 같음) |
string |
값을 비교 (특이) |
주소 비교 |
struct |
값을 비교 |
주소 비교(무조건 거짓) |
즉, int, double 등의 변수들과 struct 를 비교하는 경우 주소가 같을수 없기에(참조를 할수 없으니 각각 스택에 따로 존재하므로)
뭘해도 referenceEquals()는 거짓이 나온다.
객체를 비교하는경우 equals도 같은 인스턴지인지 주소를 비교하므로 Equals 와 referenceEquals 는 차이가 없다.
(각 변수가 같은 객체를 참조해야 true가 나오고 같은 클래스로 같은 값을 줘서 인스턴스화해도 두 인스턴스는 false가 나온다.)
string 의 경우는 특이하게 reference type인데도 equals는 주소를 비교하지않고 값을 비교한다.
즉, string이 서로 다른 주소값을 같더라도 값이 같다면 (문장이 같다면) equals는 true가 나온다.
출처 : 내가 씀
'프로그래밍 언어 > C#' 카테고리의 다른 글
씨샵C# equals referenceequals 차이 (0) | 2017.11.12 |
---|---|
씨샵 자바 차이 (0) | 2017.11.06 |
씨샵 이벤트 발생과 처리 (0) | 2017.10.02 |
씨샵 엔터키 누를시 이벤트 (0) | 2017.10.02 |
씨샵 timer 3가지와 그 차이점 (0) | 2017.10.02 |
Comments