繁体   English   中英

方法的接收和返回通用类型-怎么做?

[英]Method receiving and returning generic type - how to do it?

我有一个包含一些样本的Frame 我想要一个将这些样本转换为另一种数字类型的方法AsType

我尝试了此操作,但由于找不到The type or namespace 'TargetType' cannot be found 另外,对于为什么它不起作用以及如何找到正确的方法来思考和正确使用它,我有些困惑。

public class Frame<T>
{
    public T[] Samples { get; protected set; }

    public Frame(IEnumerable<T> Samples)
    {
        Samples = Samples.ToArray();
    }

    public Frame<TOut> AsType(Type TOut)
    {
        // line below doesn't work
        return new Frame<TOut>(Samples.Select(s => (TOut)s));
    }
}

您不需要为此使用方法参数 ,但需要一个通用参数

                        //don't miss this parameter!
public Frame<TOut> AsType<TOut>()
{
    return new Frame<TOut>(Samples.Select(s => (TOut)s));
}

TOut是通用参数,因此不需要额外的类型参数。 但是请注意,调用此方法的类型必须存在一个显式转换,否则(TOut)s将抛出InvalidCastException

您可以使用Cast<>扩展名更改代码:

public Frame<TOut> AsType<TOut>()
{
    return new Frame<TOut>(Samples.Cast<TOut>());
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM