4 回答
TA贡献1856条经验 获得超5个赞
从绝对意义上来讲效率不一样。取决于执行逻辑、输入值等。
比较 object.Equals(object, null) 和 string.IsNullOrEmpty, object.Equals(object, object) 性能较差。
通过Reflector看反汇编:
[TargetedPatchingOptOut("Performance critical to inline across NGen image boundaries")]
public static bool Equals(object objA, object objB)
{
return ((objA == objB) || (((objA != null) && (objB != null)) && objA.Equals(objB)));
}
如果用 obj == null 代替 object.Equals(object, null)则性能与string.IsNullOrEmpty相当。
假如用obj == null 直接比较,在 obj = string = "" 的情况下 (obj == null) 性能好于 string.IsNullOrEmpty(string). 原因不难理解,string.IsNullOrEmpty多了一个判断。
同样看一下string.IsNullOrEmpty反汇编的结果·
[TargetedPatchingOptOut("Performance critical to inline across NGen image boundaries")]
public static bool IsNullOrEmpty(string value)
{
if (value != null)
{
return (value.Length == 0);
}
return true;
}
it depends:)
有了TryParse 就用它吧~~
- 4 回答
- 0 关注
- 448 浏览
添加回答
举报