这是我的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