泛型类从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#在某些方面可能有相似的概念,但两者并不相同。如果你想快速介绍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说的
希望这对你有帮助。