您好, 欢迎来到 !    登录 | 注册 | | 设为首页 | 收藏本站

在C#中,当您对空对象调用扩展方法时会发生什么?

在C#中,当您对空对象调用扩展方法时会发生什么?

这样就可以正常工作(也不例外)。扩展方法不使用虚拟调用(即,它使用“ call” il指令,而不是“ callvirt”),因此除非您在扩展方法中自己编写,否则不存在空检查。实际上,在某些情况下这很有用:

public static bool IsNullOrEmpty(this string value)
{
    return string.IsNullOrEmpty(value);
}
public static void ThrowIfNull<T>(this T obj, string parameterName)
        where T : class
{
    if(obj == null) throw new ArgumentNullException(parameterName);
}

等等

从根本上讲,对静态调用调用非常直观-即

string s = ...
if(s.IsNullOrEmpty()) {...}

变成:

string s = ...
if(YourExtensionClass.IsNullOrEmpty(s)) {...}

显然没有空检查的地方。

c# 2022/1/1 18:16:46 有586人围观

撰写回答


你尚未登录,登录后可以

和开发者交流问题的细节

关注并接收问题和回答的更新提醒

参与内容的编辑和改进,让解决方法与时俱进

请先登录

推荐问题


联系我
置顶