本文主要是介绍public static T CloneObjectT(this T obj) where T:class{},希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
这个方法涉及到两个知识点: 1)泛型 2)扩展方法先抛开“扩展方法”不提,这个方法属于“泛型方法”(注意:不是泛型类)。 以下为简单示例: public static T ToString<T>(T obj) {return obj.ToString(); } 假设调用: ToString<int>(2); 等效于: public static int ToString(int obj) // 原来的 T 被替换为 int { return obj.ToString(); }假设调用 ToString<string>("MyString"); 等效于: public static string ToString(string obj) // 原来的 T 被替换为 string { return obj.ToString(); }通过以上例子可以看出,泛型参数 T 其实就是一个“类型占位符”,在编译时或运行时动态的替换为实际数据类型。我想你现在可以大致理解泛型方法了吧? 最后备注:where T : class 表示约束泛型参数 T 必须是引用类型,不能是值类型。扩展方法: 是指在某个类型上,扩展出一个方法(属于编译技术,俗称:语法糖)。 CloneObject<T>(this T obj) 意思,是指在类型 T 上扩展一个 CloneObject 方法。 这个 T 是泛型参数: 1)如果泛型参数是 string 则表示在 string 上扩展 CloneObject 方法 2)如果泛型参数是 ArrayList 则表示在 ArrayList 上扩展 CloneObject 方法 3)如果泛型参数是其它 XXXXX 类,则表示在 XXXXX 类上扩展 CloneObject 方法以上为原理解释,实际运行效果,如一楼“风声正乱”所述,此处不再赘述。
这篇关于public static T CloneObjectT(this T obj) where T:class{}的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!