1

以下に何が欠けていますか?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; }
}
4

2 に答える 2

5

T が ICloneable を実装する必要があると一般的な条件が示しているため、顧客は ICloneable を実装する必要があります。

public class Customer : ICloneable

于 2012-10-12T02:14:46.777 に答える
0

クラスにICloneableインターフェースを実装する必要があります。また、 whereCustomerに対して拡張メソッドが定義されているため、以下の構文を使用することもできます。IList<T>T is ICloneable

        IList<Customer> list = new List<Customer>();
        list.Clone(); 

実装しない場合、Clone()拡張メソッドは表示されませんCustomerICloneable

于 2012-10-12T02:20:37.927 に答える