Equals() ๋ฉ์๋๊ฐ ์ด๋ป๊ฒ ์๋ํ๋์ง ์์ธํ ์์๋ณด์. ๋ฌธ์์ด ๋น๊ต๋ ์ค๋ฌด์์ ์ ๋ง ์์ฃผ ์ฌ์ฉํ๋ ๊ธฐ๋ฅ์ด๋ผ, ์ ํํ ์ดํดํ๊ณ ๋์ด๊ฐ๋ ๊ฒ์ด ์ค์ํ๋ค. ๊ทธ๋์ ๋ด๊ฐ ์ดํดํ ๋ด์ฉ์ ์ ๋ฆฌํด๋ณธ๋ค.
1. Equals()๋?
Equals()๋ C#์์ ๊ฐ์ฒด๋ ๊ฐ์ ๋น๊ตํ ๋ ์ฌ์ฉํ๋ ๋ฉ์๋๋ค. ํนํ ๋ฌธ์์ด์์ Equals()๋ ๋ ๋ฌธ์์ด์ด ๊ฐ์์ง ์ฌ๋ถ๋ฅผ ํ์ธํ๋ ๋ฐ ์ฃผ๋ก ์ฌ์ฉ๋๋ค.
1.1 ๊ธฐ๋ณธ์ ์ธ ๋์ ์๋ฆฌ
- Equals() ๋ฉ์๋ ์ ์ธ:
public virtual bool Equals(object? obj);
- object ํ์ ์ ๋งค๊ฐ๋ณ์๋ก ๋ฐ๋๋ค. (์ฆ, ๋ชจ๋ ๊ฐ์ฒด์ ๋น๊ต ๊ฐ๋ฅํ๋ค.)
- ๋น๊ต ๋์์ด ๊ฐ์ผ๋ฉด true, ๋ค๋ฅด๋ฉด false๋ฅผ ๋ฐํํ๋ค.
- ๋ฌธ์์ด์์ ์ค๋ฒ๋ก๋ ๋ Equals ๋ฉ์๋: ๋ฌธ์์ด ํด๋์ค์์๋ Equals ๋ฉ์๋๊ฐ ๋ค์๊ณผ ๊ฐ์ด ์ค๋ฒ๋ก๋๋์ด ์๋ค:
public bool Equals(string? value); public bool Equals(string? value, StringComparisonType comparisonType);
- value: ๋น๊ตํ ๋ฌธ์์ด
- comparisonType: ๋์๋ฌธ์๋ฅผ ๊ตฌ๋ถํ๊ฑฐ๋ ๋ฌธํ๊ถ๋ณ ๋น๊ต ๋ฐฉ์์ ์ค์ ํ ์ ์๋ ๋งค๊ฐ๋ณ์
1.2 ๋ฌธ์์ด ๋น๊ต์ ๊ธฐ๋ณธ ์ฌ์ฉ๋ฒ
- ๊ธฐ๋ณธ ๋ฌธ์์ด ๋น๊ต
- ๊ธฐ๋ณธ์ ์ผ๋ก Equals()๋ ๋์๋ฌธ์๋ฅผ ๊ตฌ๋ถํ๋ฉฐ, ๋ฌธ์์ด์ ๊ฐ์ด ์ ํํ ๋์ผํ์ง ๋น๊ตํ๋ค.
string str1 = "Hello"; string str2 = "hello"; bool result = str1.Equals(str2); // ๋์๋ฌธ์ ๊ตฌ๋ถ: False
- ๊ธฐ๋ณธ์ ์ผ๋ก Equals()๋ ๋์๋ฌธ์๋ฅผ ๊ตฌ๋ถํ๋ฉฐ, ๋ฌธ์์ด์ ๊ฐ์ด ์ ํํ ๋์ผํ์ง ๋น๊ตํ๋ค.
- ๋์๋ฌธ์๋ฅผ ๋ฌด์ํ ๋น๊ต
- ๋ง์ฝ ๋์๋ฌธ์๋ฅผ ๋ฌด์ํ๊ณ ์ถ๋ค๋ฉด, StringComparison.OrdinalIgnoreCase๋ฅผ ์ฌ์ฉํ๋ค:
string str1 = "Hello"; string str2 = "hello"; bool result = str1.Equals(str2, StringComparison.OrdinalIgnoreCase); // True
- StringComparison.OrdinalIgnoreCase๋ ๋์๋ฌธ์๋ฅผ ๊ตฌ๋ถํ์ง์๊ณ , ๋ฌธ์์ด์ด ๋์ผํ์ง ํ์ธํ๋ค.
- ๋ง์ฝ ๋์๋ฌธ์๋ฅผ ๋ฌด์ํ๊ณ ์ถ๋ค๋ฉด, StringComparison.OrdinalIgnoreCase๋ฅผ ์ฌ์ฉํ๋ค:
2. Equals vs. == ์ฐ์ฐ์
Equals ๋ฉ์๋์ == ์ฐ์ฐ์์ ์ฐจ์ด์
- Equals:
- Equals๋ ์ฐธ์กฐ ํ์ ์์๋ ๊ฐ์ ๋น๊ตํ์ง๋ง, ๊ธฐ๋ณธ์ ์ผ๋ก ์ฐธ์กฐ ํ์ ์์๋ ์ฐธ์กฐ ๋น๊ต๋ฅผ ์ํํ๋ค.
- ์๋ฅผ ๋ค์ด, ๋ฌธ์์ด์ ๊ฐ ํ์ ์ฒ๋ผ ๋น๊ต๊ฐ ์ค๋ฒ๋ก๋๋์ด ์์ด ๊ฐ์ ๋น๊ตํ๋ค.
- == ์ฐ์ฐ์:
- == ์ฐ์ฐ์๋ ํ์ ์ ๋ฐ๋ผ ๋์์ด ๋ค๋ฅด๋ค.
- ๊ฐ ํ์ : ๊ฐ์ ๋น๊ตํ๋ค.
- ์ฐธ์กฐ ํ์
: ๊ธฐ๋ณธ์ ์ผ๋ก ์ฐธ์กฐ๋ฅผ ๋น๊ตํ๋ค.
- ํ์ง๋ง ๋ฌธ์์ด์ ์์ธ์ ์ผ๋ก ๊ฐ ๋น๊ต๊ฐ ๊ตฌํ๋์ด ์๋ค.
์์:
string str1 = "hello";
string str2 = "hello";
string str3 = new string("hello".ToCharArray());
Console.WriteLine(str1.Equals(str2)); // True (๊ฐ ๋น๊ต)
Console.WriteLine(str1 == str2); // True (๋ฌธ์์ด ๋น๊ต)
Console.WriteLine(str1.Equals(str3)); // True (๊ฐ ๋น๊ต)
Console.WriteLine(str1 == str3); // True (๊ฐ ๋น๊ต๋ก ์ค๋ฒ๋ก๋๋จ)
2.1 ์ธ์ Equals๋ฅผ ์ฌ์ฉํ ๊น?
Euals๋ฅผ ์ฌ์ฉํ๋ ๊ฒ์ด ์ ๋ฆฌํ ๊ฒฝ์ฐ:
- ๋ฌธ์์ด ๋น๊ต์์ ๋์๋ฌธ์๋ฅผ ๋ฌด์ํ๊ฑฐ๋, ๋ฌธํ๊ถ๋ณ ๋น๊ต ๋ฐฉ์์ ๋ช
ํํ ์ง์ ํด์ผ ํ ๋,
- ์: Equals(otherString, StringComparison.OrdinalOgnoreCase)
- ์ฐธ์กฐ ํ์
์ ๋น๊ต๊ฐ ํ์ํ๋ฐ, ์ฐธ์กฐ ์์ฒด๊ฐ ์๋๋ผ ๊ฐ ๋น๊ต๋ฅผ ๋ช
์์ ์ผ๋ก ์ํํ๊ณ ์ถ์ ๋.
- ์: object.Equals(obj1, obj2)
- == ์ฐ์ฐ์๊ฐ ์ ๋๋ก ์ค๋ฒ๋ก๋๋์ด ์๋์ง ํ์ ํ ์ ์์ ๋
2.2 ๋ฐฐ์ด์
- Equals๋ ๋จ์ํ ๊ฐ ๋น๊ต๋ฅผ ๋์ด์, ๋ฌธ์์ด ๋น๊ต๋ฅผ ๋ ์ธ๋ฐํ๊ฒ ์ ์ดํ ์ ์๋ ๊ฐ๋ ฅํ ๋ฉ์๋๋ค.
- ์ฝ๋์์ Equals๋ฅผ ์ฌ์ฉํ ๋, ๋์๋ฌธ์ ๊ตฌ๋ถ์ด๋ ๋น๊ต ๋ฐฉ์์ ๊ณ ๋ คํ๋ฉด ์ค์๋ฅผ ์ค์ผ ์ ์๋ค.
- ๋จ์ํ ๊ฐ ๋น๊ต์๋ == ๋ ์ถฉ๋ถํ ์ ํจํ๋ฉฐ, Equals๋ฅผ ์ฌ์ฉํ๋ฉด ๋ ๋ช ํํ ์๋๋ฅผ ์ฝ๋์ ๋ด์ ์ ์๋ค.
'C#' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[C#] var ํค์๋์ ์๋ฌต์ ํ์ ์ถ๋ก (0) | 2025.02.16 |
---|---|
[C#] ASP.NET 4.0 ๋ ๊ฑฐ์ ์ฝ๋ web.config ํ์ผ ๋ถ์ (0) | 2024.12.30 |
[C#] String.IsNullOrEmpty() ์ ์ ๋ฉ์๋๋ (0) | 2024.12.15 |
[C#] ๋ค์ํ ๋ฐ์ดํฐ ํ์์ ์ฒ๋ฆฌํ๋ ์ผ๋ฐํ ํ๋ก๊ทธ๋๋ฐ (0) | 2024.09.01 |
[C#] ์์ ํ๊ณ ํจ์จ์ ์ธ ์ค๋ ๋ ์์ฑ ๋ฐ ์ข ๋ฃ ๋ฐฉ๋ฒ (1) | 2024.06.03 |