C#에서 Uri.Equals() 메서드는 두 개의 Uri 인스턴스가 서로 동일한지 비교하는 데 사용됩니다. 웹 주소를 다루는 애플리케이션에서 두 URI가 같은 리소스를 가리키는지 확인해야 할 때 유용하게 활용할 수 있습니다.
구문
Uri.Equals() 메서드의 기본 구문은 다음과 같습니다.
public override bool Equals (object comparand);
여기서 매개변수 comparand는 현재 인스턴스와 비교할 Uri 인스턴스 또는 URI 식별자를 의미합니다. 두 객체가 동일하면 true, 그렇지 않으면 false를 반환합니다.
예제 1: 동일한 URI 비교하기
먼저 두 개의 완전히 같은 URI를 생성하여 Equals() 메서드로 비교해 보겠습니다.
using System;
public class Demo {
public static void Main(){
Uri newURI1 = new Uri("https://www.tutorialspoint.com/index.htm");
Console.WriteLine("URI = "+newURI1);
Uri newURI2 = new Uri("https://www.tutorialspoint.com/index.htm");
Console.WriteLine("URI = "+newURI2);
if(newURI1.Equals(newURI2))
Console.WriteLine("Both the URIs are equal!");
else
Console.WriteLine("Both the URIs aren't equal!");
}
}실행 결과
위 코드를 실행하면 다음과 같은 결과가 출력됩니다.
URI = https://www.tutorialspoint.com/index.htm URI = https://www.tutorialspoint.com/index.htm Both the URIs are equal!
두 URI의 스키마, 호스트, 경로가 모두 동일하므로 Equals() 메서드는 true를 반환합니다.
예제 2: 서로 다른 URI 비교하기
이번에는 경로가 다른 두 개의 URI를 비교해 보겠습니다.
using System;
public class Demo {
public static void Main(){
Uri newURI1 = new Uri("https://www.tutorialspoint.com/index.htm");
Console.WriteLine("URI = "+newURI1);
Uri newURI2 = new Uri("https://www.tutorialspoint.com/");
Console.WriteLine("URI = "+newURI2);
if(newURI1.Equals(newURI2))
Console.WriteLine("Both the URIs are equal!");
else
Console.WriteLine("Both the URIs aren't equal!");
}
}실행 결과
위 코드를 실행하면 다음과 같은 결과가 출력됩니다.
URI = https://www.tutorialspoint.com/index.htm URI = https://www.tutorialspoint.com/ Both the URIs aren't equal!
첫 번째 URI는 경로에 index.htm이 포함되어 있고, 두 번째 URI는 루트 경로만 가지고 있으므로 두 URI는 서로 다르다고 판단됩니다.
정리
Uri.Equals() 메서드는 단순히 문자열을 비교하는 것이 아니라, URI의 각 구성 요소(스키마, 호스트, 포트, 경로 등)를 기준으로 동등성을 판단합니다. 따라서 URL 문자열 직접 비교보다 더 안정적이고 신뢰할 수 있는 방식으로 URI를 비교할 수 있습니다.