泛型类从java转换为C#

本文关键字:转换 java 泛型类 | 更新日期: 2023-09-27 18:26:16

从JAVA转换为C#:

public interface SomeInterface
{
    public <T> void invoke(Collection<T> list);
}
class someMethod implemet SomeInterface
{
    public <T> void invoke(Collection<T> list) 
    {
        int count = 0;
        if (itemToCount == null) 
        {
            for ( T item : collection )
                if (item == null)
                    count++;
        }
        else
        {
            //some code
        }   
        return count;
    }
}

如果我在c#中复制这个,它将显示错误:

错误:找不到类型或命名空间名称"T"(是否缺少using指令或程序集引用?)

错误:无效的令牌">"在类、结构或接口成员声明中

错误:无效的令牌"<"在类、结构或接口成员声明中

实际上,我不知道如何在c#中使用这种类型的代码。

泛型类从java转换为C#

Java和C#在某些方面可能有相似的概念,但两者并不相同。如果你想快速介绍C#泛型,请查看这篇关于泛型的C#教程

最好不要只是将Java代码复制到C#中。对于您的代码,这个使用泛型的简单示例可能会对您有所帮助:

public interface SomeInterface
{
    public int invoke<T>(ICollection<T> list);
}
public class SomeClass : SomeInterface
{
    public int invoke<T>(ICollection<T> list)
    {
        int count = 0;
        foreach (var item in list)
        {
            count++;
        }
        return count;
    }
}

如果你想在一个接口中创建一个Collection,那么在C#中就不能用这种方式。

你需要这样做:

public interface MyInterface<T,TCollection>
where TCollection : ICollection<T>
{
  TCollection MyCollection{ get; set; }
}

此外,你会在你的课上有错误,就像Andy Korneyev说的

希望这对你有帮助。