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
[ツッコミを入れる]