繁体   English   中英

通用转换器无法推断类型

[英]Generic converter can't infer type

我正在尝试编写此转换器以与所有类型一起使用。 所以我正在使用泛型。 但是收到以下编译时错误。

error CS0411: The type arguments for method 'SomeConverter.ConvertToList<T>(ArrayLike)' cannot be inferred from the usage. Try specifying the type arguments explicitly.

有可能没有在ConvertToList中明确说明类型? 如果不是,为什么不能在通用方法中推断出T?

using System;
using System.Collections;
using System.Collections.Generic;

public static class SomeConverter 
{
    public static List<T> ConvertToList<T>(ArrayLike inputArray)
    {       
        List<T> tList = new List<T>();
        for(int i=0; i < inputArray.Length; i++)            
        {
            tList.Add ((T)(object)inputArray[i]);
        }

        return tList;
    }

}

public class ArrayLike
{
    private string[] arr = new string[100];

    public string this[int i]
    {
        get
        {               
            return arr[i];
        }
        set
        {
            arr[i] = value;
        }
    }

    public int Length { get { return 100; } }
}

class TestClass
{
    static void Main(string[] args)
    {
        ArrayLike arrayLike = new ArrayLike();
        arrayLike[0] = "a";
        arrayLike[1] = "b";
        arrayLike[2] = "c";

        List<string> stringList = SomeConverter.ConvertToList(arrayLike);
        foreach(string str in stringList)
            Console.WriteLine (str);
    }
}

您在此方法中没有任何通用参数。 因此,它不能从其参数推断T的类型。 您应该手动指定类型通用参数:

List<string> stringList = SomeConverter.ConvertToList<string>(arrayLike);

暂无
暂无

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

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