当前位置:  开发笔记 > 编程语言 > 正文

无法将T转换为间隔(我自己的自定义类型)

如何解决《无法将T转换为间隔(我自己的自定义类型)》经验,为你挑选了1个好方法。

这是我的c#代码,我想使用"DisplayList"检查类型T是否是我的自定义类型自定义,然后使用我的DisplayInterval函数进行打印.

但是有一个错误无法将T转换为visual studio中的间隔.我不知道我的代码有什么问题.

希望有人能给我一个答案.

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(IList list)
{
    foreach (T element in list)
    {
        if (element.GetType() == typeof(Interval))
           DisplayInterval(element);

        else
            Console.WriteLine(element);
    }
}

Sergey Berez.. 5

只需添加施法:

DisplayInterval((Interval)element);

有时候覆盖ToString自定义类的方法也很好:

public class Interval
{
    public int start; // consider to use properties: public int Start {get;}
    public int end;
    public Interval(): this (0,0) { } // you can call second constructor here
    public Interval(int s, int e) { start = s; end = e; }

    public override string ToString()
    {
        return $"[{start},{end}]";
    }
}

根据您的定义,ToString您可以简单地迭代元素而无需检查其类型:

public static void DisplayList(IList list)
{
    foreach (T element in list)
    {
        Console.WriteLine(element);
    }
}

BTW对于您的原始解决方案 - 您不需要检查列表中每个元素的类型.因此它们都具有相同的类型.您只能检查通用参数的类型.甚至更好 - 创建单独的显示方法IList.



1> Sergey Berez..:

只需添加施法:

DisplayInterval((Interval)element);

有时候覆盖ToString自定义类的方法也很好:

public class Interval
{
    public int start; // consider to use properties: public int Start {get;}
    public int end;
    public Interval(): this (0,0) { } // you can call second constructor here
    public Interval(int s, int e) { start = s; end = e; }

    public override string ToString()
    {
        return $"[{start},{end}]";
    }
}

根据您的定义,ToString您可以简单地迭代元素而无需检查其类型:

public static void DisplayList(IList list)
{
    foreach (T element in list)
    {
        Console.WriteLine(element);
    }
}

BTW对于您的原始解决方案 - 您不需要检查列表中每个元素的类型.因此它们都具有相同的类型.您只能检查通用参数的类型.甚至更好 - 创建单独的显示方法IList.

推荐阅读
放ch养奶牛
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有