下面我想念的是什么?当我尝试 list.Clone()克隆未显示在列表中时。
https://stackoverflow.com/a/222640/139698
class Program
{
static void Main(string[] args)
{
List<Customer> list = new List<Customer>();
list.Clone() //There is no Clone method in the list
}
}
public static class Extensions
{
public static IList<T> Clone<T>(this IList<T> listToClone) where T : ICloneable
{
return listToClone.Select(item => (T)item.Clone()).ToList();
}
}
public class Customer
{
public string ContactName { get; set; }
public string City { get; set; }
}
答案 0 :(得分:5)
客户必须实施ICloneable,因为您的通用条件表明T必须实施ICloneable。
public class Customer : ICloneable
答案 1 :(得分:0)
您需要在ICloneable
课程上实施Customer
界面。此外,由于已为IList<T>
T is ICloneable
定义了扩展方法,您可能需要使用以下语法
IList<Customer> list = new List<Customer>();
list.Clone();
如果Clone()
未实现Customer
,则ICloneable
扩展方法将无法显示