2015-12-26 48 views
3

我有一個Order類,它實現了IComparable的列表和重寫ToString方法一個列表擴展方法

Order類:

public class Order : IComparable 
    { 
     public int id { get; set; } 
     public DateTime date { get; set; } 
     public int CompareTo(object obj) 
     { 
      if (obj == null) 
      { 
       return 1; 
      } 
      else 
      { 
       Order order = obj as Order; 
       if (order == null) 
       { 
        throw new ArgumentException("object is not an order"); 
       } 
       return this.date.CompareTo(order.date); 
      } 
     } 
     public override string ToString() 
     { 
      return this.id+"--"+this.date.ToString("dd/MM/yyyy"); 
     } 
    } 

現在我添加一個擴展方法顯示到清單和它正在按我的預期工作

擴展類

現在
public static class ListExtension 

    { 
     public static void Show(this List<Order> list) 
     { 

      foreach (var item in list) 
      { 
       Console.WriteLine(item.ToString()); 
      } 
     } 
    } 

我想談談我的方法顯示通用:

public static class ListExtension<T> 
    { 
     public static void Show(this List<T> list) 
     { 

      foreach (var item in list) 
      { 
       Console.WriteLine(item.ToString()); 
      } 
     } 
    } 

但我不能把一般的擴展方法。你可以幫我嗎 。

+0

介紹如何調用該方法,產生哪些編譯器錯誤,以及您嘗試研究該錯誤。 – CodeCaster

回答

5

你錯過了<T>函數的名稱後,以使它通用:

public static class ListExtension 
{ 
    public static void Show<T>(this List<T> list) 
    { 
     foreach (var item in list) 
     { 
      Console.WriteLine(item.ToString()); 
     } 
    } 
} 
2

擴展可以更加通用和更快的(我認爲):

public static void Show<T>(this IList<T> list) 
{ 
    var str = String.Join(Environment.NewLine, list); 
    Console.WriteLine(str); 
}