這是我的C#代碼,我想使用「DisplayList」來檢查類型T是否是我的自定義類型自定義,然後使用我的DisplayInterval函數來打印它。不能將T轉換爲間隔(我自己的自定義類型)
但是有一個錯誤,無法將T轉換爲視覺工作室中的間隔。我不知道我的代碼有什麼問題。
希望有人能給我一個答案。
public class Interval
{
public int start;
public int end;
public Interval() { start = 0; end = 0; }
public Interval(int s, int e) { start = s; end = e; }
}
public static void DisplayInterval(Interval inter)
{
Console.Write(" [{0},{1}]",inter.start,inter.end);
}
public static void DisplayList<T>(IList<T> list)
{
foreach (T element in list)
{
if (element.GetType() == typeof(Interval))
DisplayInterval(element);
else
Console.WriteLine(element);
}
}
不這樣做,只是重寫該類型的'ToString'來定義它應該如何顯示。或者,至少不要使該方法具有通用性,因爲它實際上不是通用的。讓它接受一個'List',因爲這就是你實際上支持的。 –
Servy
定義'ToString'看起來有爭議:對象不應該知道它應該如何打印到控制檯,除非它是它的主要責任。 – zerkms
我沒說你不能。我說你不應該。它不會縮放。當你從現在開始一個小時後再創建一個新對象,並在接下來的幾個星期再次創建一個新對象,並在接下來的幾個月內再創建一個新對象。 – Servy