ここは私のC#コードです。タイプTが私のカスタムタイプのカスタムであるかどうかをチェックするために "DisplayList"を使い、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
私はあなたができないと言っていませんでした。私はあなたがしてはならないと言った。それは縮尺通りではありません。新しいオブジェクトを今から1時間後に作成し、次の数週間に100回以上作成するとどうなりますか? – Servy