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

C#のUri.MakeRelativeUri(Uri)メソッドとは?使い方とサンプルコードを解説

C#のUri.MakeRelativeUri(Uri)メソッドは、現在のUriインスタンスと指定された別のUriインスタンスとの差分、つまり相対URIを求めるために使用されるメソッドです。

構文

MakeRelativeUriメソッドの構文は以下の通りです。

public Uri MakeRelativeUri (Uri uri);

引数「uri」には、現在のURIと比較する対象のURIを指定します。戻り値として、2つのURIの差分を表す相対URIが返されます。

使用例1

それでは、Uri.MakeRelativeUri(Uri)メソッドの具体的な使用例を見てみましょう。

using System;

public class Demo {
   public static void Main(){
      Uri newURI1 = new Uri("https://www.tutorialspoint.com/");
      Console.WriteLine("URI = "+newURI1);
      Uri newURI2 = new Uri("https://www.tutorialspoint.com/java.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 res = newURI1.MakeRelativeUri(newURI2);
      Console.WriteLine("Relative uri = "+res);
   }
}

出力結果

上記のプログラムを実行すると、以下のような出力が得られます。

URI = https://www.tutorialspoint.com/
URI = https://www.tutorialspoint.com/java.htm
Both the URIs aren't equal!
Relative uri = java.htm

この例では、ベースとなるURI「https://www.tutorialspoint.com/」に対して、比較対象のURI「https://www.tutorialspoint.com/java.htm」との差分である相対URI「java.htm」が正しく取得できています。

使用例2

次に、フラグメント識別子(#以降の部分)を含むURIを使用した別の例を見てみましょう。

using System;

public class Demo {
   public static void Main(){
      Uri newURI1 = new Uri("https://www.tutorialspoint.com/");
      Console.WriteLine("URI = "+newURI1);
      Uri newURI2 = new Uri("https://www.tutorialspoint.com/jquery.htm#abcd");
      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 res = newURI1.MakeRelativeUri(newURI2);
      Console.WriteLine("Relative uri = "+res);
   }
}

出力結果

上記のプログラムを実行すると、以下のような出力が得られます。

URI = https://www.tutorialspoint.com/
URI = https://www.tutorialspoint.com/jquery.htm#abcd
Both the URIs aren't equal!
Relative uri = jquery.htm#abcd

このように、フラグメント識別子「#abcd」が含まれる場合でも、その部分まで含めた相対URI「jquery.htm#abcd」が正しく返されることが確認できます。MakeRelativeUriメソッドを使えば、異なるURI同士の関係性を簡単に把握できるため、URLの操作やリンク生成などの処理で活用できます。

  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以下の要素」と