哪个更快?这个:
bool isEqual = (MyObject1 is MyObject2)
或此:
bool isEqual = ("blah" == "blah1")
找出哪一个更快会很有帮助。显然,如果像程序员经常将.ToUpper()应用于字符串比较的每一侧,则需要重新分配内存,这会影响性能。但是如果.ToUpper()是否超出上述示例的公式范围呢?
我有点困惑。
正如其他答案所指出的,您正在比较苹果和橙子。 ::rimshot::
如果要确定对象是否属于某种类型,请使用is
运算符。
如果要比较字符串,请使用==
运算符(如果需要类似不区分大小写的比较,则可以使用其他合适的比较方法。)>
[一种操作与另一种操作相比没有多快(无双关)似乎并不重要。
仔细阅读后,我认为您想将字符串比较的速度与引用比较的速度(System.Object基本类型中使用的比较类型)进行比较。
如果是这种情况,那么答案就是引用比较永远不会比任何其他字符串比较都慢。 .NET中的引用比较非常类似于在C中比较指针-尽快获得。
但是,如果字符串变量s
的值为"I'm a string"
,但是以下比较失败,您会感觉如何:
if (((object) s) == ((object) "I'm a string")) { ... }
如果您只是比较引用,则可能会根据
s
值的创建方式而发生。如果最终没有被拘禁,它将与文字字符串没有相同的引用,因此比较将失败。因此,您可能有一个比较快的比较方法,但这种方法并非总是可行。这似乎是一个糟糕的优化。
根据该书最大化.NET性能通话
第一个用于比较类型而不是值。如果要比较不区分大小写的字符串,可以使用:
你告诉我怎么样? :)
将字符串与“ ==”运算符进行比较,会将字符串的contents
我假设比较第一个示例中的对象将和它获得的结果一样快,因为它只是检查两个对象是否都指向内存中的相同地址。
[如果我理解问题,并且您确实