这两种扩展方法之间有什么实际区别吗?
class Extensions
{
public static void Foo<T>(this T obj) where T : class { ... }
public static void Foo(this object obj) { ... }
}
Run Code Online (Sandbox Code Playgroud)
我在扩展溢出中徘徊,我遇到了第一个表单,我以前没用过.好奇有什么区别.
SLa*_*aks 10
扩展方法Object
也适用于值类型.(他们将被电话盒装,降低性能)
<T>
但是没有的扩展方法where T : class
也适用于值类型,但不会对它们进行封装.
另外,<T>
可以编写扩展方法typeof(T)
来获取其调用的编译时类型.
如果你这样做,请注意它们之间的区别
someButton.Extension();
someButton.Extension<Control>();
someButton.Extension<Object>();
Run Code Online (Sandbox Code Playgroud)