C#
 Computer >> コンピューター >  >> プログラミング >> C#

C#のUri.IsBaseOfメソッドとは?構文と使い方を実例付きで解説

C#のUri.IsBaseOf()メソッドは、現在のUriインスタンスが、指定された別のUriインスタンスのベース(基底アドレス)であるかどうかを判定するためのメソッドです。相対URIを解決する際などに、あるURIが別のURIの基底となっているかを確認したい場合に便利です。

構文

Uri.IsBaseOf()メソッドの構文は以下の通りです。

public bool IsBaseOf (Uri uri);

引数として渡す「uri」には、判定対象となる指定のUriインスタンスを指定します。戻り値はbool型で、現在のインスタンスが指定されたUriのベースであればtrue、そうでなければfalseが返されます。

使用例1:同一ドメ内での判定

まず、Uri.IsBaseOf()メソッドを使用した基本的な例を見てみましょう。

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!");
        if(newURI1.IsBaseOf(newURI2))
            Console.WriteLine("newURI1 is the base address");
        else
            Console.WriteLine("newURI1 isn't the base address");
    }
}

実行結果

上記のコードを実行すると、次のような出力が得られます。

URI = https://www.tutorialspoint.com/index.htm
URI = https://www.tutorialspoint.com/
Both the URIs aren't equal!
newURI1 is the base address

この例では、2つのURIは同じではないものの(Equalsによる比較はfalse)、newURI1がnewURI2のベースアドレスであると判定されています。

使用例2:異なるドメ間での判定

続いて、異なるドメインの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.qries.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!");
        if(newURI1.IsBaseOf(newURI2))
            Console.WriteLine("newURI1 is the base address");
        else
            Console.WriteLine("newURI1 isn't the base address");
    }
}

実行結果

このコードを実行すると、次のような出力になります。

URI = https://www.tutorialspoint.com/index.htm
URI = https://www.qries.com/
Both the URIs aren't equal!
newURI1 isn't the base address

異なるドメイン同士のため、newURI1はnewURI2のベースアドレスではないと判定されました。このように、Uri.IsBaseOf()メソッドを使えば、スキームやホストを含むURIの階層関係を簡単に確認できます。

  1. C#のTakeWhileメソッドの使い方をわかりやすく解説

    C#のLINQに用意されているTakeWhile()メソッドを使うと、Predicate(述語)で指定した条件が成立している間、シーケンスの先頭から要素を取得することができます。 このメソッドは、条件を満たす限り先頭から順に要素を取り出し、最初に条件を満たさなくなった要素に到達した時点で処理を停止するという特徴があります。そのため、配列の途中に条件外の要素があると、それ以降の要素はたとえ条件を満たしていても取得されない点に注意が必要です。 TakeWhile()メソッドの基本的な使い方 まず、整数型の配列を宣言して初期化します。 int[] arr = { 25, 40, 65, 70 };

  2. C#のGroupBy()メソッドとは?要素をグループ化する使い方を解説

    GroupBy()メソッドとはC#のGroupBy()は、System.Linq名前空間に用意されている拡張メソッドの一つです。指定したキー値に基づいてコレクション内の要素をグループ化し、その結果をIEnumerable<IGrouping<TKey, TElement>>として返します。各グループにはKeyプロパティが割り当てられ、同じキーを持つ要素がひとつのまとまりとして扱われます。サンプルコードまず、次のような整数型の配列を用意します。int[] arr = { 2, 30, 45, 60, 70 };この配列に対してGroupBy()を使い、「50以下の要素」と