メモの日々


2020年12月04日(金) [長年日記]

[c#] System.UriクラスのIsBaseOf()の振る舞い

System.Uri.IsBaseOf()の仕様が、リファレンスを読んでもいつもよくわからなくなるのでメモ。

  • URIの最後のスラッシュより後ろを削除したもの同士を比較している

と考えればいいみたい。比較の際にbaseにする方のURIからも後半が削除されるから混乱するんだと思う。

> var b = new Uri("http://host/path/file?query");
> b.IsBaseOf(new Uri("http://host/path/abc/def/"))
true
> b.IsBaseOf(new Uri("http://host/path/abc"))
true
> b.IsBaseOf(new Uri("http://host/path/"))
true
> b.IsBaseOf(new Uri("http://host/path"))
false