![](/img/trans.png)
[英]What does equating an EventHandler type var to a delegate mean in C#?
[英]C# Equating URIs
确定这两个相似的Uris实际上是一样的标准方法是什么?
var a = new Uri("http://sample.com/sample/");
var b = new Uri("http://sample.com/sample");
Console.WriteLine(a.Equals(b));
// False
确定a == b的最佳方法是什么? 我可以比较Uri对象的子属性,如Host,LocalPath等,但我想知道是否有更好的方法。
编辑:谢谢大家。 我基本上只需让用户强制执行是否相同。
Uri类重写Equals
并实现==
运算符以确定相等性。
测试两个Uri实例是否相同的方法是:
if(a == b)
在你的情况下,它们并不等同。 a
末尾的目录终止符具有特定含义,而b
可能是目录或文件。
正如大家评论的那样 - 这些网址并不相同。
如果你对你的情况比较网址有某些特殊的方式-你需要编写自己的代码进行比较。 请尝试使用Uri / UriBuilder类将Url解析为组件,而不是在比较Urls时编写自己的组件。 也就是说,您可能希望进行比较以对查询字符串进行不区分大小写的比较。
如果你想说“当他们指向相同的内容时网址是平等的”,那么你手头有更多有趣的问题。
如果你想实现你自己的逻辑,其中上面的两个例子将被认为是相同的(我故意避免术语相等,显而易见的原因)一个解决方案是创建一个扩展方法 。 例如
public static class ExtensionMethods
{
public static bool AreTheSame(this Uri left, Uri uri)
{
//your implemention here
}
}
然后你可以:
var a = new Uri("http://sample.com/sample/");
var b = new Uri("http://sample.com/sample");
Console.WriteLine(a.AreTheSame(b));
你可以在你自己的IComparer<in T>
等中使用这个方法。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.