加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

c#性能:类型比较与字符串比较

发布时间:2020-12-15 19:41:10 所属栏目:百科 来源:网络整理
导读:哪个更快?这个: bool isEqual = (MyObject1 is MyObject2) 或这个: bool isEqual = ("blah" == "blah1") 找出哪一个更快会有所帮助.显然,如果你将.ToUpper()应用于字符串比较的每一边,就像程序员经常做的那样,那就需要重新分配影响性能的内存.但是,如果.T
哪个更快?这个:

bool isEqual = (MyObject1 is MyObject2)

或这个:

bool isEqual = ("blah" == "blah1")

找出哪一个更快会有所帮助.显然,如果你将.ToUpper()应用于字符串比较的每一边,就像程序员经常做的那样,那就需要重新分配影响性能的内存.但是,如果.ToUpper()不像上面的样本那样怎么样?

解决方法

我在这里有点困惑.

正如其他答案所指出的那样,你要比较苹果和橘子. ::边敲击::

如果要确定某个对象是否属于某种类型,请使用is运算符.

如果你想比较字符串,可以使用==运算符(或其他适当的比较方法,如果你需要像不区分大小写的比较那样花哨的东西).

一个操作与另一个操作相比的速度(没有双关语)似乎并不重要.

仔细阅读之后,我认为您希望将字符串比较的速度与参考比较的速度(System.Object基类型中使用的比较类型)进行比较.

如果是这种情况,那么答案是参考比较永远不会比任何其他字符串比较慢. .NET中的参考比较非常类似于比较C中的指针 – 大约和你能得到的一样快.

但是,如果字符串变量s的值为“我是一个字符串”,您会感觉如何,但以下比较失败:

if (((object) s) == ((object) "I'm a string")) { ... }

如果您只是比较引用,则可能会发生这种情况,具体取决于s的值的创建方式.如果它最终没有被实现,它将没有与文字字符串相同的引用,因此比较将失败.所以你可能有一个更快的比较,并不总是有效.这似乎是一个糟糕的优化.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读