C# 函数不能返回与返回类型具有相同接口的类型

C# 函数不能返回与返回类型具有相同接口的类型,c#,.net,interface,C#,.net,Interface,我有一个简单的程序: class Program { static void Main(string[] args) { InA testing = GetA(); } static InA GetA<InA>() { return new A(); } } public interface InA {

我有一个简单的程序:

class Program
    {
        static void Main(string[] args)
        {
            InA testing = GetA();
        }

        static InA GetA<InA>()
        {
            return new A();
        }
    }

    public interface InA
    {
        void test();
    }

    public class A : InA
    {
        public void test()
        {
            throw new NotImplementedException();
        }
    }
类程序
{
静态void Main(字符串[]参数)
{
InA测试=GetA();
}
静态inageta()
{
返回新的A();
}
}
公共接口
{
无效试验();
}
公共A类:InA
{
公开无效测试()
{
抛出新的NotImplementedException();
}
}
为什么不能从GetA()返回的实例?实现接口InA


在这种情况下,InA作为而不是作为接口名处理。您应该以不同的方式声明GetA方法的泛型参数,或者完全删除它。这应该起作用:

static InA GetA()
{
    return new A();
}

冗余的泛型类型是什么?这意味着在方法的范围内,
InA
指的是泛型类型,而不是接口。正如接口应以字母
I
开头一样,作为惯例,所有泛型类型应以字母
T
开头,如
TVal
中所述。这样,很明显你在处理什么。