문자열 비교를 할때가 많다.
보통 변수A == 변수B 이런형태로도 많이 비교한다.
대소문자의 구분 유무로 인해서 ToUpper() 나 ToLower() 를 사용해서 사용하기도 한다.
하지만 크기 비교를 해야할때도 있다. 문자열을 크기 비교라니..;; 현실은 자주 쓴다..ㅋ
그래서 asp.net 에는 문자열 비교 함수가 준비되어있다.
1. Compare
string.Compare (string StrA, string StrB, bool BoolC)
: 비교할 문자열 2개가 필요하고 bool 타입은 대소문자 무시여부이다. true는 대소문자 무시(A = a로 인식), false는 대소문자 비교, 생략시 false.
문자열 비교 값이 같을 경우 0을 반환하며 문자열 크기 비교도 가능하다. A보다 B가 크다.
조건문을 쓸때는 if (string.Compare(StrA, StrB, true) == 0) 이런 형태로 써야 한다.
간혹 if (string.Compare(StrA, StrB, true)) 이런 형태의 실수를 종종하게 된다. 물론 저도..ㅋㅋ;;
ex1) string.Compare("AA", "aa", true)
결과 : 0
ex2) string.Compare("AA", "aa", false)
결과 : 1
ex3) string.Compare("AA", "BB")
결과 : -1
2. CompareTo
StrA.CompareTo(StrB)
: 비교할 문자열 2개만 있으면 비교가 되며 string.Compare과의 차이점은 대소문자를 무조건 비교한다는 정도가 되겠다.
반환하는 결과도 같고, 정렬에 적합한 함수라 한다. 대소문자 구분의 필요성에 따라 분류해서 쓰는편이다.
ex1) "AAA".CompareTo("aaa")
결과 : 1
ex2) "AAA".CompareTo("AAA")
결과 : 0
ex3) "AAA".CompareTo("BBB")
결과 :
3. Equals , ==
StrA.Equals(StrB) 과 StrA == StrB
: 이런 형태가 실제로는 많이 쓰이고 있는걸로 알고 있다. 단순 비교일때는 저도 많이 씁니다. 이 둘은 유사해 보이나 실제로는 Equals 는 값을 비교하고, == 는 객체 참조를 비교합니다. 그래서 같은 타입끼리의 비교는 차이가 없지만 다른 타입끼리의 비교에는 차이가 생깁니다. 이 두녀석은 간단하게 이정도만 언급하겠습니다. 예문은 이해하기 편하게 숫자타입으로 했습니다.
ex1) Convert.ToInt16(0).Equals(Convert.ToInt64(0))
결과 : False
ex2) Convert.ToInt16(0) == Convert.ToInt64(0)
결과 : True
찾아보면 더 있을지도 모르나 이정도가 대표적일것 같습니다. Compare와 CompareTo의 차이점으로 하려다가 일반적으로는 == 를 제일 많이 쓸것도 같고해서 글이 좀 늘어나버렸고 마무리 정리가 좀 이상하긴하지만 이정도가 있다는 정도만으로 봐주시면 고맙겠습니다.
'Asp.net (C#.net)' 카테고리의 다른 글
App_Code 사용 또는 사용자 클래스 사용 (0) | 2018.08.23 |
---|---|
Visual Studio (비주얼 스튜디오) Asp.net Mvc 에서 WebMatrix 사용하기 (0) | 2018.07.11 |
asp.net (c#) 동적 배열 (ArrayList, List<T>) (0) | 2018.07.04 |
asp.net Mvc5 passwod validation 변경 (암호 정책 변경) (0) | 2018.07.04 |
Asp.net Mvc PagedList 페이징 처리 (검색 기능 포함) (2) (0) | 2018.07.03 |