Notice
Recent Posts
Recent Comments
Link
«   2025/05   »
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
Tags more
Archives
Today
Total
관리 메뉴

맛있는 개발노트 (맛과 개발을 함께)

C# 세미나 자료: 상등 및 관계 연산자 (Equality & Relational Operators) 본문

C# 학습/C# 언어의 기초

C# 세미나 자료: 상등 및 관계 연산자 (Equality & Relational Operators)

DevGourmet 2025. 4. 8. 00:20

1. 개요

C#에서 상등(Equality) 및 관계(Relational) 연산자는 두 피연산자 간의 관계를 비교하고, 그 결과를 bool 타입으로 반환합니다. 조건문, 반복문, 필터링 로직 등 다양한 상황에서 사용되며, 프로그래밍의 핵심 비교 도구입니다.

이 세미나에서는 C#의 비교 연산자 종류, 특징, 사용법 및 주의사항을 초급부터 고급까지 단계별로 설명합니다.


2. 기본 이론

2.1 상등 연산자

연산자의미예시설명

== 같음 a == b 두 값이 같으면 true
!= 다름 a != b 두 값이 다르면 true

2.2 관계 연산자

연산자 의미 예시 설명
> 보다 큼 a > b 왼쪽이 크면 true
< 보다 작음 a < b 왼쪽이 작으면 true
>= 크거나 같음 a >= b 왼쪽이 크거나 같으면 true
<= 작거나 같음 a <= b 왼쪽이 작거나 같으면 true
  • 모든 연산자는 bool 값을 반환함
  • 피연산자의 형식이 동일하거나 암시적 변환 가능해야 함

3. 단계별 설명

3.1 초급: 숫자 및 문자 비교

int a = 5;
int b = 10;

Console.WriteLine(a == b); // false
Console.WriteLine(a < b);  // true

char x = 'A';
char y = 'B';
Console.WriteLine(x < y);  // true (문자 코드 비교)

3.2 중급: 문자열 및 사용자 정의 타입 비교

string name1 = "Alice";
string name2 = "alice";
Console.WriteLine(name1 == name2); // false (대소문자 구분)

Console.WriteLine(name1.Equals(name2, StringComparison.OrdinalIgnoreCase)); // true
  • 문자열은 기본적으로 대소문자를 구분함
  • 사용자 정의 타입은 Equals 또는 == 오버라이딩 필요

3.3 고급: 참조형 비교, null 비교

object obj1 = new object();
object obj2 = new object();
Console.WriteLine(obj1 == obj2); // false (참조 비교)

object obj3 = obj1;
Console.WriteLine(obj1 == obj3); // true

string s = null;
Console.WriteLine(s == null); // true
  • 참조형에서 ==는 주소 비교를 기본으로 함
  • null 비교는 예외를 방지하기 위한 필수 조건 검사로 자주 사용됨

4. 주의사항 및 팁

  • 문자열 비교 시 대소문자 민감 여부 확인 (StringComparison 사용)
  • 부동소수점 비교 시 == 사용은 권장되지 않음 → Math.Abs(a - b) < epsilon 방식 사용
  • 사용자 정의 타입에서 ==, !=을 오버라이딩할 경우 Equals, GetHashCode도 함께 구현해야 함
  • ==Equals()는 비슷하지만 의미가 다름 → 참조 vs. 값 비교

5. 결론

  • 상등 및 관계 연산자는 C#의 조건 제어 및 논리 흐름의 핵심 도구
  • 숫자, 문자, 문자열, 참조형에 따라 비교 방식이 다르며, 올바른 연산자를 선택해야 함
  • ==Equals(), null 비교, 대소문자 민감도 등을 충분히 고려해야 함

6. Q&A

Q1. 문자열 비교에서 대소문자를 무시하고 비교하려면?
A1. Equals(str1, str2, StringComparison.OrdinalIgnoreCase)를 사용합니다.

Q2. float이나 double에서 == 비교가 정확하지 않나요?
A2. 그렇습니다. 반올림 오차가 존재하므로 Math.Abs(a - b) < 1e-10 같은 방식으로 비교하는 것이 좋습니다.

Q3. 사용자 정의 클래스에서 == 비교를 정확하게 하려면?
A3. ==, != 연산자를 오버로딩하고 Equals(), GetHashCode()도 함께 구현해야 합니다.

Q4. 참조형 객체는 값이 같아도 ==이 false가 될 수 있나요?
A4. 네. 기본 ==는 메모리 참조 주소를 비교하기 때문입니다. 값 비교가 필요하면 Equals() 또는 오버라이딩된 ==를 사용해야 합니다.