按名称或类型比较更快?

发布于 2024-08-16 06:53:37 字数 447 浏览 3 评论 0原文

进行对象比较时,按名称(字符串)比较还是按类型(指针)比较更快?

请参见下文:

if(sender is DataGridView) { .. }

if(sender.GetType().ToString() == "System.Forms.DataGridView") { .. }

注意:我的语法可能不完全正确...这是一个 C# 示例,但是 在这里评论答案我的问题让我思考这一点。

When performing an object comparison, is it faster to compare by name (string) or type (pointer)?

See below:

if(sender is DataGridView) { .. }

or

if(sender.GetType().ToString() == "System.Forms.DataGridView") { .. }

Note: I may not have the syntax exactly right... this is a C# example, but the comment answer here in one my questions made me think about it.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

口干舌燥 2024-08-23 06:53:37

两者并不等同。仅当发送者的类型恰好是 DataGridView 时,第二个才会匹配。如果类型是 DataGridView 或继承自 DataGridView,则第一个将被匹配。所以第一点,比较并不相同。正如 Benjamin Podszun 在他的回答中所说,精确类型相等的正确比较是:

instance.GetType() == typeof(Class)

除此之外,我的直觉是,如果类型完全是 DataGridView,类型比较肯定会更快,但它会如果它是后代类型,则不太明确。

The two aren't equivalent. The second will only be matched if the type of sender is exactly DataGridView. The first will be matched if the type is, or inherits from, DataGridView. So point one, the comparisons are not the same. As Benjamin Podszun says in his answer, the correct comparison for exact type equality is:

instance.GetType() == typeof(Class)

That aside, my gut feeling is that type comparison will be faster for sure if the type is exactly DataGridView, but that it will be less clear cut in the case where it is a descendant type.

混吃等死 2024-08-23 06:53:37
if (sender.GetType().ToString() == "System.Forms.DataGridView")

都应该更好。

if (sender.GetType() == typeof(DataGridView))

无论性能特征是什么,

if (sender.GetType().ToString() == "System.Forms.DataGridView")

should probably better be

if (sender.GetType() == typeof(DataGridView))

whatever the performance characteristics might be.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文